Как закрыть мое приложение, когда я нажимаю кнопку Назад в форме xamarin
Я пытаюсь использовать метод OnBackPressed, но это когда я нажимаю кнопку назад из мобильного приложения, это вызывает заставку моей страницы
Мой поток приложений выглядит следующим образом :
Начальный экран -и GT; язык -&ГТ; главное меню
Я хочу, чтобы при нажатии кнопки назад из мобильного приложения его как этот поток приложений
Язык -> закрыть приложение
И я показываю диалоговое окно оповещения, когда пользователь нажимает кнопку назад на странице langugage, это закрывает приложение
Что я уже пробовал:
Это мое кодирование:
Язык.язык XAML.в CS
public partial class Language : ContentPage { private ApiInterface api; public static Action BackPressed; private bool AcceptBack; public Bahasa() { this.BindingContext = new BahasaViewModel(); InitializeComponent(); api = RestService.For<ApiInterface>("http://192.168.0.186/webservice/webservice.asmx"); } [Obsolete] private async void btn_lang(object sender, EventArgs e) { var deviceName = DeviceInfo.Name; var deviceType = DeviceInfo.DeviceType.ToString(); var deviceModel = DeviceInfo.Model; var deviceManufacturer = DeviceInfo.Manufacturer; var devicePlatform = DeviceInfo.Platform.ToString(); var deviceOs = DeviceInfo.Version.ToString(); String date = DateTime.Now.ToString(); Data_Device dtDevice = new Data_MimoDevice(); dtDevice.Device_name = deviceName; dtDevice.Device_type = deviceType; dtDevice.Model = deviceModel; dtDevice.Manufacturer = deviceManufacturer; dtDevice.Platform = devicePlatform; dtDevice.Os = deviceOs; dtMimoDevice.First_accessed = date; DeviceIdQuery devicequery = new DeviceIdQuery(new Device(dtMimoDevice.Id)); String jsonOfDevice = devicequery.id; var deviceQr = await api.CheckIfDeviceImeiExists(devicequery); if (deviceQr.isSuccess) { await Navigation.PushAsync(new Login()); } else { var respDevice = await api.AddNewDevice(new DeviceQuery(dtMimoDevice)); if (respDevice.isSuccess) { await Navigation.PushAsync(new Login()); } } } private void Button_Clicked(object sender, EventArgs e) { Navigation.PushAsync(new SettingPage()); } protected override bool OnBackButtonPressed() { if (AcceptBack) return false; PromptForExit(); return true; } private async void PromptForExit() { if (await DisplayAlert("", "Are you sure to exit?", "Yes", "No")) { AcceptBack = true; BackPressed(); } } }
В MainActivity.в CS
[Activity(Label = "AppTest", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity { protected override void OnCreate(Bundle savedInstanceState) { Language.BackPressed = OnBackPressed; //NoHistory = true; TabLayoutResource = Resource.Layout.Tabbar; ToolbarResource = Resource.Layout.Toolbar; base.OnCreate(savedInstanceState); Xamarin.Essentials.Platform.Init(this, savedInstanceState); global::Xamarin.Forms.Forms.Init(this, savedInstanceState); global::Xamarin.Auth.Presenters.XamarinAndroid.AuthenticationConfiguration.Init(this,savedInstanceState); UserDialogs.Init(this); LoadApplication(new App()); } public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults) { Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); base.OnRequestPermissionsResult(requestCode, permissions, grantResults); } }
Gerry Schmitz
Не вижу никакого кода для "OnBackPressed".
Язык.BackPressed = OnBackPressed;
Rey21
OnBackPressed уже находится в классе Language.xml.cs после private void Button_Clicked(object sender, EventArgs e)
Gerry Schmitz
защищенное переопределение bool OnBackButtonPressed()
Мы должны предположить, что это одно и то же? Ну, ты не выходишь, потому что твоя петля. Небрежность причиняет боль.
Rey21
не могли бы вы помочь мне, как это исправить ?