Kontrol tombol kembali di aplikasi windows phone

Saya sedang mengembangkan aplikasi Windows Phone 8. Saya ingin mengontrol tombol kembali ponsel untuk melakukan tugas tertentu. Saya ingin ketika pengguna menekan tombol kembali di halaman tertentu, ia tidak akan menavigasi ke halaman sebelumnya tetapi ke halaman yang saya inginkan. Apakah ada cara untuk mengontrol tombol kembali perangkat keras yang ada di ponsel?


person user3599830    schedule 31.12.2014    source sumber


Jawaban (2)


Di aplikasi Silverlight (WP7, WP8, WP8.1) Anda melakukan ini:

protected override void OnBackKeyPress(CancelEventArgs e)
{
    // put any code you like here
    MessageBox.Show("You pressed the Back button");
    e.Cancel = true;                       
}

Itu akan berfungsi di semua versi Windows Phone jika Anda menggunakan Silverlight.


Jika Anda menggunakan WinRT untuk Windows Phone 8.1, ini sedikit berbeda:

Buka NavigationHelper.cs dan lakukan modifikasi ini:

private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
    if (this.GoBackCommand.CanExecute(null) && !e.Handled)
    {
        e.Handled = true;
        this.GoBackCommand.Execute(null);
    }
}

Sekarang di halaman aplikasi Anda (halaman yang akan terbuka ketika tombol kembali ditekan), tambahkan namespace berikut:

using Windows.Phone.UI.Input;

Tambahkan pengendali ini ke metode konstruktor halaman Anda:

HardwareButtons.BackPressed += OnBackPressed;

Kemudian tambahkan metode ini:

private async void OnBackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
    e.Handled = true;
    // add your own code here to run when Back is pressed
}

Catatan: dalam kedua kasus, baris 'e.Handled = true' memberi tahu OS bahwa penekanan tombol kembali telah ditangani, dan oleh karena itu OS tidak akan melakukan perilaku default. Jika Anda menghapus baris itu, kode Anda sendiri akan berjalan, dan OS juga akan melakukan navigasi mundurnya sendiri.

Perhatikan komentar Rowland tentang mengganti tombol Kembali - jika Anda tidak melakukan navigasi secara intuitif, Anda akan membingungkan pengguna dan berisiko game Anda ditolak (jika Anda hanya perlu mengontrol layar atau menu jeda, itu akan baik-baik saja, tetapi jika Anda menerapkannya sesuatu yang menarik perhatian seperti menggunakan tombol Kembali sebagai kontrol permainan Anda akan mendapat masalah).

Blog saya memiliki jawaban yang sama dengan sedikit lebih detail jika Anda memerlukannya: http://grogansoft.com/blog/?p=572

person pumpkinszwan    schedule 31.12.2014

Meskipun dimungkinkan untuk membatalkan acara navigasi, dan diperbolehkan dalam game untuk menampilkan layar jeda atau sejenisnya, secara umum tidak diperbolehkan menggunakan tombol kembali untuk hal lain selain navigasi mundur dalam suatu aplikasi; Sesuai persyaratan 5.2.4 persyaratan sertifikasi teknis untuk Windows Phone

Untuk mempertahankan pengalaman pengguna yang konsisten, tombol Kembali hanya boleh digunakan untuk navigasi mundur di aplikasi.

Jika Anda membuat aplikasi XAML yang mengizinkan pembatalan operasi "kembali", seperti sesuai 5.2.4.4 persyaratan sertifikasi Teknis untuk Windows Phone :

Untuk game, ketika tombol Kembali ditekan selama bermain game, game dapat memilih untuk menampilkan menu konteks atau dialog jeda, atau dapat menavigasi pengguna ke layar menu sebelumnya.

Kemudian Anda dapat mengimplementasikannya dengan mengganti metode OnNavigatingFrom pada halaman Anda, dan mengatur properti Cancel dari NavigatingCancelEventArgs, jadi seperti contoh ini dari Fitur bingkai, halaman, dan navigasi untuk Windows Phone 8:

protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
    base.OnNavigatingFrom(e);

    // If the navigation can be cancelled, ask the user if they want to cancel
    if (e.IsCancelable)
    {
        MessageBoxResult result = MessageBox.Show("Do you want to stay here?", "Confirm Navigation from Page", MessageBoxButton.OKCancel);
        if (result == MessageBoxResult.OK)
        {
            // User wants to stay here
            e.Cancel = true;
            return;
        }
    }
}

Tentu saja, Anda dapat memilih untuk menerapkan perintah tersebut secara berbeda, namun hal tersebut akan menggambarkan bagaimana hal tersebut dapat dilakukan.

person Rowland Shaw    schedule 31.12.2014
comment
Saya sedang mengembangkan permainan dan untuk itu perlu menavigasi ke halaman tertentu dengan menekan tombol kembali. Apakah ada cara untuk melakukannya? - person user3599830; 31.12.2014
comment
Apakah ini game XAML atau XNA? - person Rowland Shaw; 31.12.2014
comment
@ user3599830 dalam hal ini, saya telah memperbarui dengan sebuah contoh untuk Anda. - person Rowland Shaw; 31.12.2014