Bagikan melalui


Xamarin.Forms Kelas Aplikasi

Kelas Application dasar menawarkan fitur berikut, yang diekspos dalam subkelas default App proyek Anda:

  • Properti MainPage , yang merupakan tempat untuk mengatur halaman awal untuk aplikasi.
  • Kamus persisten Properties untuk menyimpan nilai sederhana di seluruh perubahan status siklus hidup.
  • Properti statis Current yang berisi referensi ke objek aplikasi saat ini.

Ini juga mengekspos metode Siklus Hidup seperti OnStart, , OnSleepdan OnResume serta peristiwa navigasi modal.

Bergantung pada templat mana yang Anda pilih, App kelas dapat didefinisikan dengan salah satu dari dua cara:

  • C#, atau
  • XAML & C#

Untuk membuat kelas Aplikasi menggunakan XAML, kelas Aplikasi default harus diganti dengan kelas Aplikasi XAML dan kode terkait di belakang, seperti yang ditunjukkan dalam contoh kode berikut:

<Application xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Photos.App">

</Application>

Contoh kode berikut menunjukkan kode terkait di belakang:

public partial class App : Application
{
    public App ()
    {
        InitializeComponent ();
        MainPage = new HomePage ();
    }
    ...
}

Selain mengatur MainPage properti, code-behind juga harus memanggil InitializeComponent metode untuk memuat dan mengurai XAML terkait.

Properti MainPage

Properti MainPage pada Application kelas mengatur halaman akar aplikasi.

Misalnya, Anda dapat membuat logika di kelas untuk App menampilkan halaman yang berbeda tergantung pada apakah pengguna masuk atau tidak.

Properti MainPage harus diatur dalam App konstruktor,

public class App : Xamarin.Forms.Application
{
    public App ()
    {
        MainPage = new ContentPage { Title = "App Lifecycle Sample" }; // your page here
    }
}

Kamus properti

Subkelas Application memiliki kamus statis Properties yang dapat digunakan untuk menyimpan data, khususnya untuk digunakan dalam OnStartmetode , OnSleep, dan OnResume . Ini dapat diakses dari mana saja dalam kode Anda Xamarin.Forms menggunakan Application.Current.Properties.

Properties Kamus string menggunakan kunci dan menyimpan object nilai.

Misalnya, Anda dapat mengatur properti persisten "id" di mana saja dalam kode Anda (saat item dipilih, dalam metode halaman OnDisappearing , atau dalam OnSleep metode ) seperti ini:

Application.Current.Properties ["id"] = someClass.ID;

OnStart Dalam metode atau OnResume Anda kemudian dapat menggunakan nilai ini untuk membuat ulang pengalaman pengguna dalam beberapa cara. Kamus Propertiesobjectmenyimpan sehingga Anda perlu melemparkan nilainya sebelum menggunakannya.

if (Application.Current.Properties.ContainsKey("id"))
{
    var id = Application.Current.Properties ["id"] as int;
    // do something with id
}

Selalu periksa keberadaan kunci sebelum mengaksesnya untuk mencegah kesalahan tak terduga.

Catatan

Properties Kamus hanya dapat menserialisasikan jenis primitif untuk penyimpanan. Mencoba menyimpan jenis lain (seperti List<string>) dapat gagal secara diam-diam.

Persistensi

Properties Kamus disimpan ke perangkat secara otomatis. Data yang ditambahkan ke kamus akan tersedia ketika aplikasi kembali dari latar belakang atau bahkan setelah dimulai ulang.

Xamarin.Forms 1.4 memperkenalkan metode tambahan pada Application kelas - - SavePropertiesAsync() yang dapat dipanggil untuk secara proaktif mempertahankan Properties kamus. Ini untuk memungkinkan Anda menyimpan properti setelah pembaruan penting daripada berisiko mereka tidak diserialisasikan karena crash atau dimatikan oleh OS.

Anda dapat menemukan referensi untuk menggunakan Properties kamus di Membuat Aplikasi Seluler dengan Xamarin.Formsbuku (lihat bab 6, 15, dan 20) dan dalam sampel terkait.

Kelas Aplikasi

Implementasi kelas lengkap Application ditunjukkan di bawah ini untuk referensi:

public class App : Xamarin.Forms.Application
{
    public App ()
    {
        MainPage = new ContentPage { Title = "App Lifecycle Sample" }; // your page here
    }

    protected override void OnStart()
    {
        // Handle when your app starts
        Debug.WriteLine ("OnStart");
    }

    protected override void OnSleep()
    {
        // Handle when your app sleeps
        Debug.WriteLine ("OnSleep");
    }

    protected override void OnResume()
    {
        // Handle when your app resumes
        Debug.WriteLine ("OnResume");
    }
}

Kelas ini kemudian dibuat di setiap proyek khusus platform dan diteruskan ke LoadApplication metode tempat MainPage dimuat dan ditampilkan kepada pengguna. Kode untuk setiap platform ditampilkan di bagian berikut. Templat solusi terbaru Xamarin.Forms sudah berisi semua kode ini, yang telah dikonfigurasi sebelumnya untuk aplikasi Anda.

Proyek iOS

Kelas iOS AppDelegate mewarisi dari FormsApplicationDelegate. Cloud Cache harus:

  • Panggil LoadApplication dengan instans App kelas.

  • Selalu kembalikan base.FinishedLaunching (app, options);.

[Register ("AppDelegate")]
public partial class AppDelegate :
    global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate // superclass new in 1.3
{
    public override bool FinishedLaunching (UIApplication app, NSDictionary options)
    {
        global::Xamarin.Forms.Forms.Init ();

        LoadApplication (new App ());  // method is new in 1.3

        return base.FinishedLaunching (app, options);
    }
}

Proyek Android

Android MainActivity mewarisi dari FormsAppCompatActivity. OnCreate Dalam mengambil alih LoadApplication metode dipanggil dengan instans App kelas.

[Activity (Label = "App Lifecycle Sample", Icon = "@drawable/icon", Theme = "@style/MainTheme", MainLauncher = true,
    ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : FormsAppCompatActivity
{
    protected override void OnCreate (Bundle bundle)
    {
        base.OnCreate (bundle);

        global::Xamarin.Forms.Forms.Init (this, bundle);

        LoadApplication (new App ()); // method is new in 1.3
    }
}

Proyek Universal Windows (UWP) untuk Windows 10

Halaman utama dalam proyek UWP harus diwarisi dari WindowsPage:

<forms:WindowsPage
   ...
   xmlns:forms="using:Xamarin.Forms.Platform.UWP"
   ...>
</forms:WindowsPage>

Kode C# di balik konstruksi harus memanggil LoadApplication untuk membuat instans .Xamarin.FormsApp Perhatikan bahwa adalah praktik yang baik untuk secara eksplisit menggunakan namespace aplikasi untuk memenuhi syarat App karena aplikasi UWP juga memiliki kelas mereka sendiri App yang tidak terkait dengan Xamarin.Forms.

public sealed partial class MainPage
{
    public MainPage()
    {
        InitializeComponent();

        LoadApplication(new YOUR_NAMESPACE.App());
    }
 }

Perhatikan bahwa Forms.Init() harus dipanggil dari App.xaml.cs dalam proyek UWP.

Untuk informasi selengkapnya, lihat Menyiapkan Proyek Windows, yang mencakup langkah-langkah untuk menambahkan proyek UWP ke solusi yang sudah ada yang tidak menargetkan Xamarin.Forms UWP.

Temukan video Xamarin lainnya di Channel 9 dan YouTube.