Создание второго действия




Лаборторная работа № 2

Знакомство с Android (несколько экранов)

 

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

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

Прилагаемый подробный обзор описывает полученный результат, а также затрагивает архитектуру, навигацию и другие новые понятия Android, которые вам встретились.

Пошаговое руководство

В этом пошаговом руководстве вы добавите в приложение Phoneword экран Translation History (Журнал преобразований).

Сначала откройте приложение Phoneword в Visual Studio и измените файл Main.axml из обозревателя решений.

Совет

Новые выпуски Visual Studio поддерживают открытие XML-файлов в Android Designer.

Android Designer поддерживает как файлы AXML, так и XML.

Обновление макета

На панели элементов перетащите элемент Button в область конструктора и расположите его под элементом TextView TranslatedPhoneWord. В области Свойства замените ИД кнопки на @+id/TranslationHistoryButton.

Задайте для свойства Текст кнопки значение @string/translationHistory. Android Designer интерпретирует это буквально, но вы внесете некоторые изменения, чтобы текст кнопки отображался правильно:

Разверните узел Значения в папке Ресурсы в обозревателе решений и дважды щелкните файл строковых ресурсов Strings.xml:

Добавьте значение и имя строки translationHistory в Strings.xml, а затем сохраните файл:

XMLКопировать

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="translationHistory">Translation History</string>

<string name="ApplicationName">Phoneword</string>

</resources>

Текст кнопки Translation History (Журнал преобразований) должен обновиться, отразив новое строковое значение:

Выбрав кнопку Translation History (Журнал преобразований) в области конструктора, найдите параметр enabled в области Свойства и присвойте ему значение false, чтобы отключить кнопку. При этом кнопка в области конструктора темнеет:

Создание второго действия

Создайте вторую операцию для обработки второго экрана. В обозревателе решений щелкните правой кнопкой мыши проект Phoneword и выберите Добавить > Новый элемент...:

В диалоговом окне Добавление нового элемента выберите Visual C# > Действия и назовите файл действий TranslationHistoryActivity.cs.

Замените код шаблона в файле TranslationHistoryActivity.cs следующим кодом:

C#Копировать

using System;

using System.Collections.Generic;

using Android.App;

using Android.OS;

using Android.Widget;

namespace Phoneword

{

[Activity(Label = "@string/translationHistory")]

public class TranslationHistoryActivity: ListActivity

{

protected override void OnCreate(Bundle bundle)

{

base.OnCreate(bundle);

// Create your application here

var phoneNumbers = Intent.Extras.GetStringArrayList("phone_numbers")?? new string[0];

this.ListAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, phoneNumbers);

}

}

}

В этом классе вы создаете ListActivity и программно заполняете его, поэтому не нужно создавать файл макета для этого действия.

Добавление списка

Это приложение собирает телефонные номера (которые пользователь преобразовал на первом экране) и передает их на второй экран. Эти номера хранятся в виде списка строк. Для поддержки списков (и целей, которые используются позднее) добавьте следующие директивы using в начало файла MainActivity.cs:

C#Копировать

using System.Collections.Generic;

using Android.Content;

Создайте пустой список, который можно заполнить телефонными номерами. Класс MainActivity будет выглядеть следующим образом:

C#Копировать

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

public class MainActivity: Activity

{

static readonly List<string> phoneNumbers = new List<string>();

...// OnCreate, etc.

}

В классе MainActivity добавьте следующий код, чтобы зарегистрировать кнопку Translation History (Журнал преобразований) (поместите эту строку сразу после объявления translateButton):

C#Копировать

Button translationHistoryButton = FindViewById<Button> (Resource.Id.TranslationHistoryButton);

Добавьте в конец метода OnCreate следующий код, чтобы подключить кнопку Translation History (Журнал преобразований):

C#Копировать

translationHistoryButton.Click += (sender, e) =>

{

var intent = new Intent(this, typeof(TranslationHistoryActivity));

intent.PutStringArrayListExtra("phone_numbers", phoneNumbers);

StartActivity(intent);

};

Измените кнопку Translate (Преобразовать), чтобы добавить телефонный номер в список phoneNumbers. Обработчик Click для translateButton должен иметь вид, аналогичный следующему коду:

C#Копировать

// Add code to translate number

string translatedNumber = string.Empty;

translateButton.Click += (sender, e) =>

{

// Translate user's alphanumeric phone number to numeric

translatedNumber = Core.PhonewordTranslator.ToNumber(phoneNumberText.Text);

if (string.IsNullOrWhiteSpace(translatedNumber))

{

translatedPhoneWord.Text = "";

}

else

{

translatedPhoneWord.Text = translatedNumber;

phoneNumbers.Add(translatedNumber);

translationHistoryButton.Enabled = true;

}

};

Сохраните изменения и выполните сборку приложения, чтобы убедиться в отсутствии ошибок.

Запуск приложения

Разверните приложение в эмуляторе или на устройстве. На следующих снимках экрана показано запущенное приложение Phoneword:

Поздравляем! Вы создали свое первое приложение Xamarin.Android с несколькими экранами!



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-06-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: