Android片段手柄后退按钮按

Android片段手柄后退按钮按

我的活动中有一些片段

[1], [2], [3], [4], [5], [6]

在Back Button Press中,如果当前活动片段为[2],则必须从[2]返回到[1],否则什么也不做。

做这件事的最佳做法是什么?

编辑:申请不得从[3][6]返回[2]。


慕桂英3389331
浏览 445回答 3
3回答

炎炎设计

当您在片段之间转换时,请调用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;     }} );

沧海一幻觉

我宁愿这样做: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();     }}

手掌心

如果您覆盖了片段视图的Onkey方法,则需要:    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;             }         });
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android