Bagikan melalui


Halo, Android Multiscreen: Mulai Cepat

Panduan dua bagian ini memperluas aplikasi Telepon word untuk menangani layar kedua. Sepanjang jalan, Blok Penyusun Aplikasi Android dasar diperkenalkan dengan penyelaman yang lebih dalam tentang arsitektur Android.

Dalam bagian panduan panduan ini, Anda akan menambahkan layar kedua ke aplikasi Telepon word untuk melacak riwayat angka yang diterjemahkan menggunakan aplikasi. Aplikasi akhir akan memiliki layar kedua yang menampilkan angka yang "diterjemahkan", seperti yang diilustrasikan oleh cuplikan layar di sebelah kanan:

Contoh cuplikan layar aplikasi

Deep Dive yang menyertainya meninjau apa yang dibangun dan membahas arsitektur, navigasi, dan konsep Android baru lainnya yang ditemui di sepanjang jalan.

Persyaratan

Karena panduan ini mengambil tempat Halo, Android tidak aktif, panduan ini memerlukan penyelesaian Mulai Cepat Hello, Android.

Panduan

Dalam panduan ini, Anda akan menambahkan layar Riwayat Terjemahan ke aplikasi Telepon word.

Mulailah dengan membuka aplikasi Telepon word di Visual Studio dan mengedit file Main.axml dari Penjelajah Solusi.

Tip

Rilis Visual Studio yang lebih baru mendukung pembukaan file .xml di dalam Android Designer.

File .axml dan .xml didukung di Android Designer.

Memperbarui tata letak

Dari Kotak Alat, seret Tombol ke permukaan desain dan letakkan di bawah TextView Terjemahan Telepon Word. Di panel Properti, ubah Id tombol menjadi@+id/TranslationHistoryButton

Seret tombol baru

Atur properti Teks tombol ke @string/translationHistory. Android Designer akan menginterpretasikan ini secara harfiah, tetapi Anda akan membuat beberapa perubahan sehingga teks tombol muncul dengan benar:

Mengatur teks tombol riwayat terjemahan

Perluas simpul nilai di bawah folder Sumber Daya di Penjelajah Solusi dan klik dua kali file sumber daya string, Strings.xml:

Buka Strings.xml

translationHistory Tambahkan nama dan nilai string ke file Strings.xml dan simpan:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="translationHistory">Translation History</string>
    <string name="ApplicationName">Phoneword</string>
</resources>

Teks tombol Riwayat Terjemahan harus diperbarui untuk mencerminkan nilai string baru:

Tombol mencerminkan nilai string baru

Dengan tombol Riwayat Terjemahan dipilih pada permukaan desain, temukan enabled pengaturan di panel Properti dan atur nilainya ke false untuk menonaktifkan tombol. Ini akan menyebabkan tombol menjadi lebih gelap pada permukaan desain:

Nonaktifkan tombol riwayat terjemahan

Membuat aktivitas kedua

Buat Aktivitas kedua untuk menyalakan layar kedua. Di Penjelajah Solusi, klik kanan proyek Telepon word dan pilih Tambahkan > Item Baru...:

Tambahkan file baru

Dalam dialog Tambahkan Item Baru, pilih Aktivitas Visual C# > dan beri nama file Aktivitas TranslationHistoryActivity.cs.

Ganti kode templat di TranslationHistoryActivity.cs dengan yang berikut ini:

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);
        }
    }
}

Di kelas ini, Anda membuat ListActivity dan mengisinya secara terprogram, sehingga Anda tidak perlu membuat file tata letak baru untuk Aktivitas ini. Ini dibahas secara lebih rinci di Hello, Android Multiscreen Deep Dive.

Menambahkan daftar

Aplikasi ini mengumpulkan nomor telepon (yang telah diterjemahkan pengguna di layar pertama) dan meneruskannya ke layar kedua. Nomor telepon disimpan sebagai daftar string. Untuk mendukung daftar (dan Niat, yang digunakan nanti), tambahkan arahan berikut using ke bagian atas MainActivity.cs:

using System.Collections.Generic;
using Android.Content;

Selanjutnya, buat daftar kosong yang dapat diisi dengan nomor telepon. Kelas MainActivity akan terlihat seperti ini:

[Activity(Label = "Phoneword", MainLauncher = true)]
public class MainActivity : Activity
{
    static readonly List<string> phoneNumbers = new List<string>();
    ...// OnCreate, etc.
}

MainActivity Di kelas , tambahkan kode berikut untuk mendaftarkan tombol Riwayat Terjemahan (tempatkan baris ini setelah translateButton deklarasi):

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

Tambahkan kode berikut ke akhir OnCreate metode untuk menghubungkan tombol Riwayat Terjemahan:

translationHistoryButton.Click += (sender, e) =>
{
    var intent = new Intent(this, typeof(TranslationHistoryActivity));
    intent.PutStringArrayListExtra("phone_numbers", phoneNumbers);
    StartActivity(intent);
};

Perbarui tombol Terjemahkan untuk menambahkan nomor telepon ke daftar phoneNumbers. Handler Click untuk translateButton harus menyerupai kode berikut:

// 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;
    }
};

Simpan dan buat aplikasi untuk memastikan tidak ada kesalahan.

Menjalankan aplikasi

Sebarkan aplikasi ke emulator atau perangkat. Cuplikan layar berikut mengilustrasikan aplikasi Telepon word yang sedang berjalan:

Contoh cuplikan layar

Mulailah dengan membuka proyek Telepon word di Visual Studio untuk Mac dan mengedit file Main.axml dari Solution Pad.

Tip

Rilis Visual Studio yang lebih baru mendukung pembukaan file .xml di dalam Android Designer.

File .axml dan .xml didukung di Android Designer.

Memperbarui tata letak

Dari Kotak Alat, seret Tombol ke permukaan desain dan letakkan di bawah TextView Terjemahan Telepon Word. Di pad Properti, ubah Id tombol menjadi @+id/TranslationHistoryButton:

Seret tombol baru

Atur properti Teks tombol ke @string/translationHistory. Android Designer akan menginterpretasikan ini secara harfiah, tetapi Anda akan membuat beberapa perubahan sehingga teks tombol muncul dengan benar:

Mengatur teks tombol riwayat terjemahan

Perluas node nilai di bawah folder Sumber Daya di Solution Pad dan klik dua kali file sumber daya string, Strings.xml:

Buka String

translationHistory Tambahkan nama dan nilai string ke file Strings.xml dan simpan:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="translationHistory">Translation History</string>
    <string name="ApplicationName">Phoneword</string>
</resources>

Teks tombol Riwayat Terjemahan harus diperbarui untuk mencerminkan nilai string baru:

Tombol mencerminkan nilai string baru

Dengan tombol Riwayat Terjemahan dipilih pada permukaan desain, buka tab Perilaku di Pad Properti dan klik dua kali kotak centang Diaktifkan untuk menonaktifkan tombol. Ini akan menyebabkan tombol menjadi lebih gelap pada permukaan desain:

Nonaktifkan tombol riwayat terjemahan

Membuat aktivitas kedua

Buat Aktivitas kedua untuk menyalakan layar kedua. Di Pad Solusi, klik ikon gigi abu-abu di samping proyek Telepon word dan pilih Tambahkan > File Baru...:

Dari dialog File Baru, pilih Aktivitas Android>, beri nama Aktivitas TranslationHistoryActivity, lalu klik Tambahkan.

Ganti kode templat dengan TranslationHistoryActivity yang berikut ini:

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);
        }
    }
}

Di kelas ini, ListActivity dibuat dan diisi secara terprogram, sehingga Anda tidak perlu membuat file tata letak baru untuk Aktivitas ini. Ini dijelaskan secara lebih rinci dalam Halo, Android Multiscreen Deep Dive.

Menambahkan daftar

Aplikasi ini mengumpulkan nomor telepon (yang telah diterjemahkan pengguna di layar pertama) dan meneruskannya ke layar kedua. Nomor telepon disimpan sebagai daftar string. Untuk mendukung daftar (dan Niat, yang digunakan nanti), tambahkan arahan berikut using ke bagian atas MainActivity.cs:

using System.Collections.Generic;
using Android.Content;

Selanjutnya, buat daftar kosong yang dapat diisi dengan nomor telepon. Kelas MainActivity akan terlihat seperti ini:

[Activity(Label = "Phoneword", MainLauncher = true)]
public class MainActivity : Activity
{
    static readonly List<string> phoneNumbers = new List<string>();
    ...// OnCreate, etc.
}

MainActivity Di kelas , tambahkan kode berikut untuk mendaftarkan tombol Riwayat TranslationHistory (tempatkan baris ini setelah TranslationHistoryButton deklarasi):

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

Tambahkan kode berikut ke akhir OnCreate metode untuk menghubungkan tombol Riwayat Terjemahan:

translationHistoryButton.Click += (sender, e) =>
{
    var intent = new Intent(this, typeof(TranslationHistoryActivity));
    intent.PutStringArrayListExtra("phone_numbers", phoneNumbers);
    StartActivity(intent);
};

Perbarui tombol Terjemahkan untuk menambahkan nomor telepon ke daftar phoneNumbers. Handler Click untuk TranslateHistoryButton harus menyerupai kode berikut:

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;
    }
};

Menjalankan aplikasi

Sebarkan aplikasi ke emulator atau perangkat. Cuplikan layar berikut mengilustrasikan aplikasi Telepon word yang sedang berjalan:

Contoh cuplikan layar

Selamat atas penyelesaian aplikasi Xamarin.Android multi-layar pertama Anda! Sekarang saatnya untuk membedah alat dan keterampilan yang baru saja Anda pelajari - selanjutnya adalah Hello, Android Multiscreen Deep Dive.