[英]Android navigation architecture component - system's back button exits the app
我正在使用 android 的導航架構組件制作一個演示。 我有一個activity
和兩個fragments
。
在活動的 xml 中,我添加了以下代碼-
<fragment
android:id="@+id/main_container"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="@dimen/match_constraints"
android:layout_height="@dimen/match_constraints"
app:defaultNavHost="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/nav_graph" />
然后我將第一個片段設置為起始目的地。 在第一個片段中,在單擊按鈕時,我完成了以下操作 -
NavHostFragment.findNavController(this).navigate(R.id.action_firstFragment_to_secondFragment)
它工作正常。 現在當我按下系統的后退按鈕時,理想情況下我應該回到第一個片段,但應用程序退出。 我究竟做錯了什么?
我想,這是發生在你的代碼,因為你可能會被處理onBackPressed()
在功能某處BaseActivity
。 請仔細看。
我希望這可以幫助你。
/** orrerride activity onBackPressed() **/
private boolean doubleBackToExitPressedOnce = false;
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
public void onBackPressed() {
int start = Navigation.findNavController(this, R.id.nav_host_fragment).getCurrentDestination().getId();
if (start == R.id.nav_home) {
if (doubleBackToExitPressedOnce) {
super.onBackPressed();
return;
}
this.doubleBackToExitPressedOnce = true;
Toast.makeText(MainActivity.this, "Press back again to exits", Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
doubleBackToExitPressedOnce = false;
}
}, 2000);
} else {
super.onBackPressed();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.