[英]Back press to the previous fragment or home in android
我正在嘗試在我的應用程序中向后按移動到上一個片段或主頁片段,請指導我實現它。 提前致謝
添加addToBackstack(null)
當您更改活動中的片段時,如下所示:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new Fragment()).addToBackStack(null).commit();
每當您將片段添加到后台堆棧時,當您按下后退按鈕時,它將從其中彈出,並且應用程序將返回到也添加到后台堆棧的上一個片段。
我使用此代碼在片段之間導航
這個方法負責加載需要的片段
public void loadFragment(Fragment fragment, String tag) {
if (fragment != null) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container, fragment, tag)
.commit();
}
}
加載片段使用:
loadFragment(new HomeFragment(), "HomeFragment");
在您的活動中像這樣處理背壓:
@Override
public void onBackPressed() {
HomeFragment homeFragment = (HomeFragment) getSupportFragmentManager().findFragmentByTag("HomeFragment");
SearchFragment searchFragment = (SearchFragment) getSupportFragmentManager().findFragmentByTag("ConnectionFragment");
NotificationFragment notificationFragment = (NotificationFragment) getSupportFragmentManager().findFragmentByTag("NotificationFragment");
if (homeFragment != null && homeFragment.isVisible()) {
finish();
}
if (searchFragment != null && searchFragment.isVisible()) {
loadFragment(new HomeFragment(), "HomeFragment");
navigationView.setSelectedItemId(R.id.navigation_home);
}
if (notificationFragment != null && notificationFragment.isVisible()) {
loadFragment(new HomeFragment(), "HomeFragment");
navigationView.setSelectedItemId(R.id.navigation_home);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.