Статьи

Xamarin: Android-деятельность, контекст, содержание и представления

xamandroid

Если вы работаете с C # / Silverlight, Android может немного рассеяться. Android не имеет такой же структуры, как приложение для Windows или Windows Phone.

мероприятия

У Android есть Действия. Действия являются ключевыми классами Android, где все действия имеют место. В отличие от других приложений или программ, у вас нет «Основной» программы, которая является вашей отправной точкой при запуске.

В Android отправной точкой является активность. Деятельность должна быть объявлена ​​отправной точкой. Когда вы запускаете новый проект в Xamarin, действие под названием «MainActivity» создается автоматически.

Эта деятельность имеет некоторые атрибуты:

[Activity (Label = "gettingstarted", MainLauncher = true)]

Атрибут «Метка» — это то, что вы увидите в строке заголовка при запуске приложения. Атрибут ‘MainLauncher = true’ указывает приложению запускаться отсюда. Думайте об этом как о MainPage.xaml.cs в приложении для Windows Phone.

Каждое действие имеет свое собственное событие OnCreate, в которое вы можете поместить все свои стартовые, обработчики кнопок, стили и т. Д.

Но у Деятельности все еще есть больше. У него есть такие события, как OnStart (), OnPause (), OnRresume () и OnStop (), OnDestroy () и OnRestart (). Я не буду углубляться в это время, поскольку документация Xamarin уже содержит очень хороший обзор этих событий: http://docs.xamarin.com/guides/android/application_fundamentals/activity_lifecycle/ .

Эти события важны для понимания логики вашего приложения, например:

  • сохранение данных, которые должны быть постоянными
  • запуск и приостановка анимации
  • регистрировать и отменять регистрацию внешних событий
  • извлекать данные, которые передаются из других действий
  • и многое другое (некоторые из них мы расскажем в следующих постах)

Я настоятельно рекомендую перейти по ссылке выше, чтобы прочитать и понять эти события.

контекст

Контекст часто требуется в приложении Android и позволяет запускать ваш код в Activity.

Контекст позволяет вам, например:

  • для доступа к службам Android,
  • для доступа к ресурсам приложения, таким как изображения или стили,
  • создавать виды
  • назначать жесты деятельности

Без контекста часто код не принимается IDE или делает ваш код игнорируемым при запуске приложения. К счастью, все методы, которые я использовал до сих пор, говорили мне, что они хотят контекст, поэтому вам нужно только узнать, нужен ли вам контекст для ресурсов действия или приложений.

Intents

Но что, если мы хотим иметь другую страницу (например, отдельную страницу о программе)? Как мы можем перемещаться между страницами или вызывать внешние функции?

Для этого и нужны Интенты. Интенты отправляют сообщения через приложение, если нужно запустить другую функцию, например, запуск второй страницы. В рамках этих намерений мы объявляем действия, которые необходимо выполнить приложению, и если нам потребуется обратный вызов, это также будет передано с намерением.

Давайте придерживаться этого высокого уровня, вот несколько строк кода, которые переходят на вторую страницу (Activity):

var second = new Intent(this, typeof(SecondActivity)); StartActivity(second);

С помощью этого кода мы создаем новый Намерение с Контекстом для текущей запущенной операции, чтобы запустить SecondActivity.

Для отправки данных между Activity мы используем метод Intent PutExtra ():

var second = new Intent(this, typeof(SecondActivity)); 

second.PutExtra("FirstPage", "Data from First Page"); 

StartActivity(second);

Конечно, нам также нужен код для чтения переданных данных на нашей второй странице:

Intent.GetStringExtra("FirstPage") ?? “Data not available”;

Теперь мы можем использовать эти данные на нашей второй странице, назначив их элементу управления или функции.

Передача данных между действиями работает аналогично передаче QueryStrings в методе NavigationsService.Navigate () на WindowsPhone, поэтому вы должны ознакомиться с ним очень быстро.

Взгляды

Последняя часть, которая очень важна — это Views. В представлении вы объявляете, как выглядит действие. Думайте об этом как о вашей странице MainPage.xaml в приложении Windows Phone.

Взгляды тоже могут быть разными. Давайте начнем с простого просмотра. В нашем начальном проекте у нас также есть файл макета, который содержит наш первый вид:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:id="@+id/myButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
</LinearLayout>

Представление имеет основной LinearLayout, который действует как ContentPanel. Все остальные элементы управления, такие как кнопки, TextViews и т. Д., Входят в это. Существует множество свойств, которые можно установить, сейчас мы оставим это так просто. Если вы хотите узнать больше об этих свойствах, вы можете посмотреть документацию по Android здесь: http://developer.android.com/guide/topics/ui/declaring-layout.html

Эта часть полностью совпадает с одной соответствующей частью в Android SDK, поэтому вам также необходимо ознакомиться с документацией по Android.

Чтобы сделать View видимым, нам нужно назначить его для Activity. В нашем примере приложения мы делаем это с помощью следующей строки кода в нашем событии OnCreate:

SetContentView (Resource.Layout.Main);

Это простой способ для просмотра. Но есть и более сложные виды в Android.

Представления также используются в ListViews, где вы объявляете внешний вид элементов и списка в файле макета, а также если вы используете ActionBar с навигацией по вкладкам, а также в меню ActionBar. Я расскажу обо всем этом в своих следующих публикациях в блоге, так как нам также нужны адаптеры для привязки данных к представлениям.

Я надеюсь, что этот пост поможет вам понять структуру высокого уровня приложения Android.

До следующего раза, счастливого кодирования!