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
, , OnSleep
dan 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 OnStart
metode , 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 Properties
object
menyimpan 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 instansApp
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.