私のプロジェクトはマスターディテールナビゲーションで構築されています。 リストには、リソース、連絡先、ログインという3つのページがあります。 すべてがiOSではうまく動作しますが、ユーザーがDroid/WinPhoneデバイスのハードウェアの戻るボタンを押すと、アプリは終了します。 すべてのデバイスで動作するXamarin Formsのためのapp-exitメカニズムはありますか? (プラットフォームに依存しないネイティブコードを意味します) ありがとうございます。Xamarinフォームでアプリケーションを終了するには?
答えて
私が知る限り、Xamarinアプリケーションでアプリを終了する方法はありません。
唯一の方法は、依存関係サービスを使用することです。あなたのContentPageでOnBackButtonPressed関数をオーバーライドし、それが最後のページで確認してください:YourAndroidDependencyクラスで
protected override bool OnBackButtonPressed()
{
if(navigation.NavigationStack.Count == 1)//navigation is MainPage.Navigation
DependencyService.Get<YourDependencyInterface>().CloseApp();
}
のためのAndroid:私はよく分からない
public void CloseApp()
{
(Xamarin.Forms.Forms.Context as Activity).Finish();
}
としてWinPhoneのために、私はそれを信じて同じ方法で - 依存関係サービスを行うことができます。次の操作を行い、あなたのUI(PCL)で
:
私はINativeHelper
public class NativeHelper : INativeHelper
{
public void CloseApp()
{
Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
}
}
IOS
でINativeHelperの実装の実装を作っこのようxamarinフォームでに私はインターフェイスにAndroidのプロジェクトで
public interface INativeHelper
{
void CloseApp();
}
を追加したことをやりました
public class NativeHelper : INativeHelper
{
public void CloseApp()
{
Process.GetCurrentProcess().CloseMainWindow();
Process.GetCurrentProcess().Close();
}
}
そしてちょうどXamarin.Formsプロジェクト
protected override bool OnBackButtonPressed()
{
INativeHelper nativeHelper = null;
nativeHelper = DependencyService.Get<INativeHelper>();
if (nativeHelper != null)
{
nativeHelper.CloseApp();
}
return base.OnBackButtonPressed();
}
でページにOnBackButtonPressedメソッドをオーバーライド私はWinPhoneの実装を行っていなかったが、それは類似していなければなりません。
ありがとうございました...あなたのコードは、iOSアプリケーションを閉じるのを助けました... – Senthamizh
あなたはあなたの物理的なバックボタンが押されたアプリを閉じるためDepedencyServiceを使用することができます
protected override bool OnBackButtonPressed()
{
if (Device.OS == TargetPlatform.Android)
DependencyService.Get<IAndroidMethods>().CloseApp();
return base.OnBackButtonPressed();
}
今のAndroid固有のロジックを実装します
[assembly: Xamarin.Forms.Dependency(typeof(AndroidMethods))]
namespace Your.Namespace
{
public class AndroidMethods : IAndroidMethods
{
public void CloseApp()
{
Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
}
}
}
また、(あなたのUI PCLに)インタフェースを作成します:あなたのAndroidプロジェクトで
public interface IAndroidMethods
{
void CloseApp();
}
... おかげでたくさんの男... しかし、私はまだXamarin.Windowsでアプリを終了する方法を得るために苦労しています。私は私の側から努力しています、そして、あなたの助け/指導は評価されるでしょう... – Senthamizh
- 1. Xamarin Androidでアプリケーションを終了した後、バックグラウンドサービスが終了する
- 2. 終了時にアプリケーションを終了する
- 3. xamarinフォームのOnBackButtonPressedメソッドでアプリを終了させる
- 4. WP7でアプリケーションを終了するには?
- 5. Cant戻るXamarinフォームでBackButtonオーバーライドメソッドを作成した後にアプリケーションを終了する
- 6. フォームを閉じた後にアプリケーションを終了する
- 7. Show Acr User Dialogsローダーメソッドの終了までxamarinフォーム(アンドロイド)
- 8. RandomAccessFilesは、アプリケーションが終了するまで終了しません。
- 9. アプリケーションを終了するにはAndroid
- 10. C++アプリケーションを終了する前にバックグラウンドスレッドを終了させる
- 11. マイxamarinアプリケーションは、私がフォームをxamarinに新しいです
- 12. フォーム終了イベント
- 13. Xamarin Androidのバックグラウンドサービスがクラッシュするアプリケーションが終了するときにクラッシュする
- 14. アプリケーションを終了した後にサービスが終了する
- 15. アプリケーション終了時にアダプタ内のAlertDialogを終了する
- 16. Android:アプリケーションで終了
- 17. Blackberry:アプリケーションを終了する
- 18. xamarinのiosデバイスで起動した後でアプリケーションが終了する
- 19. プロセス終了イベントに対するアプリケーション終了
- 20. クラウドメッセージハンドリング終了アプリケーション
- 21. アプリケーションの終了
- 22. xamarinアプリケーションが正しく終了しない
- 23. アプリケーションが終了する(0)
- 24. アプリケーションをプログラムで終了する
- 25. アンドロイドでアプリケーションを終了する
- 26. インターネット上でアプリケーションを終了するエラー
- 27. アプリケーションの終了イベントの終了
- 28. 電子アプリケーションを終了してコマンドプロンプトを終了する
- 29. 終了後にPHPアプリケーションをデバッグする
- 30. 正常にアプリケーションを終了する
あなたのコードは私のプロジェクトをより良くするのを助けました。しかし、特定のページが実行されたときにナビゲーションスタックをクリアしたいとします。たとえば、ユーザーが[リソース]ページをクリックしたときに、ナビゲーションスタックの履歴をクリアしたい場合、何か方法はありますか? そして、あなたの時間のおかげで... – Senthamizh
あなたは、リソースページをnavigation.InsertPageBeforeにプッシュすることができます ()navigation.PopToRootAsync();私は何をしたのですか: – Dima
'for(int i = 0; navigation.NavigationStack。Count> 1;){//すべてのページを廃棄する var page = navigation.NavigationStack.ElementAt(i); if(page.BindingContext!= null && page.BindingContextがBaseViewModel){ (BaseViewModelとしてpage.BindingContext).OnDisappearing(); page.BindingContext = null; } navigation.PopAsync(false); //アニメーションがありません navigation.RemovePage(ページ); // AnimationNavigationPageでクラッシュする } ' – Dima