[英]pressing back button application mixes in android
在我的Fragement中按后退按鈕面臨問題。按回我的應用程序與其他片段混合在一起。
誰能幫我
我有4個碎片
DealerDetails.java
rootView.setFocusableInTouchMode(true);
rootView.requestFocus();
rootView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// Log.i(tag, "keyCode: " + keyCode);
if (keyCode == KeyEvent.KEYCODE_BACK) {
// Log.i(tag, "onKey Back listener is working!!!");
// getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
Fragment fragment = new DealerByNamesFragement();
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment).commit();
return true;
} else {
return false;
}
}
});
通過按返回按鈕,我想顯示DealerByNamesFragement.java
DealerByNamesFragement.java
rootView.setFocusableInTouchMode(true);
rootView.requestFocus();
rootView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// Log.i(tag, "keyCode: " + keyCode);
if(keyCode == KeyEvent.KEYCODE_BACK && keyCode == KeyEvent.ACTION_DOWN ) {
// Log.i(tag, "onKey Back listener is working!!!");
// getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
Fragment fragment = new DealerSearchFragment();
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment).addToBackStack("tag1").commit();
return true;
} else {
return false;
}
}
});
By pressing back redirecting to DealerSearchFragment.java
DealerSearchFragment.java
rootView.setFocusableInTouchMode(true);
rootView.requestFocus();
rootView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// Log.i(tag, "keyCode: " + keyCode);
if (keyCode == KeyEvent.KEYCODE_BACK) {
// Log.i(tag, "onKey Back listener is working!!!");
// getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
Fragment fragment = new HomeFragment();
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment).commit();
return true;
} else {
return false;
}
}
});
您的活動中是否有onBackPressed()
?
從活動中調用新片段時,請不要忘記將addToBackStack
設置為null
。
mFragmentTransaction.addToBackStack(null);
並將onBackPressed()
方法添加到活動中以完成后退按鈕過程
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() == 0) {
this.finish();
} else {
getFragmentManager().popBackStack();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.