Android片段手柄后退按钮按我的活动中有一些片段[1], [2], [3], [4], [5], [6]在Back Button Press中,如果当前活动片段为[2],则必须从[2]返回到[1],否则什么也不做。做这件事的最佳做法是什么?编辑:申请不得从[3][6]返回[2]。
3 回答

炎炎设计
TA贡献1808条经验 获得超4个赞
addToBackStack()
FragmentTransaction
:
FragmentTransaction tx = fragmentManager.beginTransation();tx.replace( R.id.fragment, new MyFragment() ).addToBackStack( "tag" ).commit();
OnKeyListener
//You need to add the following line for this solution to work; thanks skayredfragment.getView().setFocusableInTouchMode(true);fragment.getView().requestFocus();fragment.getView().setOnKeyListener( new OnKeyListener(){ @Override public boolean onKey( View v, int keyCode, KeyEvent event ) { if( keyCode == KeyEvent.KEYCODE_BACK ) { return true; } return false; }} );

沧海一幻觉
TA贡献1824条经验 获得超5个赞
private final static String TAG_FRAGMENT = "TAG_FRAGMENT";private void showFragment() { final Myfragment fragment = new MyFragment(); final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.fragment, fragment, TAG_FRAGMENT); transaction.addToBackStack(null); transaction.commit();}@Overridepublic void onBackPressed() { final Myfragment fragment = (Myfragment) getSupportFragmentManager().findFragmentByTag(TAG_FRAGMENT); if (fragment.allowBackPressed()) { // and then you define a method allowBackPressed with the logic to allow back pressed or not super.onBackPressed(); }}

手掌心
TA贡献1942条经验 获得超3个赞
view.setFocusableInTouchMode(true); view.requestFocus(); view.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { Log.i(tag, "keyCode: " + keyCode); if( keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) { Log.i(tag, "onKey Back listener is working!!!"); getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); return true; } return false; } });
- 3 回答
- 0 关注
- 444 浏览
添加回答
举报
0/150
提交
取消