大佬教程收集整理的这篇文章主要介绍了android – 应用程序退出导航抽屉内的片段内的预定按钮,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Navigation Drawer-LandingActivity.java-ChaanelGrid.java(Fragment)-GridMain.java(Fragment)
LandingActivity.java
currentFragment = new ChaanelGrid(); currentFragment.setArguments(args); frgManager = getFragmentManager(); frgManager.begintransaction().add(R.id.content_frame,currentFragment).addToBACkStack("tag") .commit();
ChaanelGrid.java
Fragment currentFragment = new GridMain(); FragmentManager frgManager; frgManager = getFragmentManager(); frgManager.begintransaction().add(R.id.content_frame,currentFragment).addToBACkStack("GridMain") .commit()
GridMain.java(我试过没有onKey()方法但也没用)
rootView.setOnKeyListener(new View.onKeyListener() { @Override public Boolean onKey(View v,int keyCode,KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { Fragment currentFragment = new ChaanelGrid(); FragmentManager frgManager; frgManager = getFragmentManager(); frgManager.begintransaction().replace(R.id.content_frame,currentFragment) .commit(); return true; }
logcat详细
10-31 21:46:57.954 24452-24452/D/ActivityThread﹕ ACT-AM_ON_PAUSE_CALLED ActivityRecord{41eb8b98 token=android.os.binderProxy@41bb9828 {xyz/xyz..activity.LandingActivity_}} 10-31 21:46:57.971 24452-24452/ D/ActivityThread﹕ ACT-PAUSE_ACTIVITY_FINISHING handled : 0 / android.os.binderProxy@41bb9828 10-31 21:46:58.007 24452-24452/ V/InputMethodManager﹕ focusOut: android.widget.GridView@41f06f40 mServedView=android.widget.GridView@41f06f40 winFocus=false 10-31 21:46:58.297 24452-24452/ I/SurfaCETextureClient﹕ [0x5143bc58] frames:44,duration:1.002000,fps:43.883736 10-31 21:46:58.350 24452-24452/ D/OpenGLRenderer﹕ Flushing caches (mode 0) 10-31 21:46:58.432 24452-24452/ D/OpenGLRenderer﹕ Flushing caches (mode 0) 10-31 21:46:58.753 24452-24452/ D/OpenGLRenderer﹕ Flushing caches (mode 0) 10-31 21:46:58.754 24452-24452/ D/OpenGLRenderer﹕ Flushing caches (mode 0) 10-31 21:46:58.755 24452-24452/ D/OpenGLRenderer﹕ Flushing caches (mode 2) 10-31 21:46:58.879 24452-24452/ D/ActivityThread﹕ ACT-DESTROY_ACTIVITY handled : 1 / android.os.binderProxy@41bb9828
我尝试在LandingActivity.java中添加以下内容
@Override public void onBACkPressed() { FragmentManager frgManager; frgManager = getFragmentManager(); Fragment fragment = fragmentManager.findFragmentByTag("GridMain"); if (fragment != null) { GridMain gridMain = (GridMain) fragment; if (!gridMain.onBACkPressed()) { super.onBACkPressed(); } } else { super.onBACkPressed(); } }
并在GridMain.java中跟随
protected Boolean onBACkPressed() { FragmentManager frgManager; frgManager = getFragmentManager(); frgManager.popBACkStack(); return true; }
// "State Machine" variables: to inDicate which is the active Fragment. private static Boolean isHelpShown = false; protected static Boolean isInfoShown = false; protected static Boolean ismainShown = false; private static Boolean isViewShown = false; // Used to switch between Fragments. private static enum Fragments { MAIN,VIEW,HelP,INFO } @Override public final void onBACkPressed() { if (ismainShown) { // We're in the MAIN Fragment. finish(); } else { // We're somewhere else,reload the MAIN Fragment. showFragment(Fragments.MAIN); } } private final void showFragment(final Fragments FragmentTypE) { isViewShown = false; isHelpShown = false; isInfoShown = false; ismainShown = false; final Fragmenttransaction ft = getSupportFragmentManager().begintransaction(); /* replace whatever is in the fragment_container view with this fragment,and add the transaction to the BACk stack so the user can navigate BACk. */ switch(FragmentTypE) { case HelP: { ft.replace(R.id.frgMaster,new FRG_Help()); isHelpShown = true; break; } case INFO: { ft.replace(R.id.frgMaster,new FRG_Info()); isInfoShown = true; break; } case VIEW: { ft.replace(R.id.frgMaster,new FRG_View()); isViewShown = true; break; } case MAIN: { ft.replace(R.id.frgMaster,new FRG_Main()); ismainShown = true; break; } } ft.setTransition(Fragmenttransaction.TRANSIT_FRAGMENT_OPEN); // Finalize the transaction... ft.commit(); getSupportFragmentManager().executePendingtransactions(); }
正如你所看到的,根据我的需要,我只处理MAIN片段(我退出)或者当我们不在时(我回到MAIN片段:另一个BACk press并退出).
以上是大佬教程为你收集整理的android – 应用程序退出导航抽屉内的片段内的预定按钮全部内容,希望文章能够帮你解决android – 应用程序退出导航抽屉内的片段内的预定按钮所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。