在我的Fragement中按下后退按钮面临问题。压缩我的应用程序与其他碎片混合。
任何人都可以帮助我
我有4个Fragements
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;
}
}
});
答案 0 :(得分:0)
您的活动中有onBackPressed()
吗?
从活动中调用新片段时,不要忘记将addToBackStack
设置为null
。
mFragmentTransaction.addToBackStack(null);
并向活动添加onBackPressed()
方法以完成后退按钮流程
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() == 0) {
this.finish();
} else {
getFragmentManager().popBackStack();
}
}