我有一个在NavigationDrawer中有多个片段的应用程序.
以下是我的代码:
@H_301_7@@OverrIDe public boolean onPrepareOptionsMenu(Menu menu) { // if nav drawer is opened, hIDe the action items boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList); menu.findItem(R.ID.action_search).setVisible(!drawerOpen); return super.onPrepareOptionsMenu(menu); } /** * Diplaying fragment vIEw for selected nav drawer List item * */ private voID displayVIEw(int @R_502_4612@) { // update the main content by replacing fragments fragment = null; switch (@R_502_4612@) { case 0: fragment = new HomeFragment(); break; case 1: fragment = new galleryFragment(); break; case 2: fragment = new ContactFragment(); break; default: break; } if (fragment != null) { FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction() .replace(R.ID.frame_container, fragment).commit(); // update selected item and Title, then close the drawer mDrawerList.setItemChecked(@R_502_4612@, true); mDrawerList.setSelection(@R_502_4612@); setTitle(navMenuTitles[@R_502_4612@]); mDrawerLayout.closeDrawer(mDrawerList); } else { // error in creating fragment Log.e("MainActivity", "Error in creating fragment"); } } @OverrIDe public voID setTitle(CharSequence Title) { mTitle = Title; getActionbar().setTitle(mTitle); } /** * When using the ActionbarDrawerToggle, you must call it during * onPostCreate() and onConfigurationChanged()... */ @OverrIDe protected voID onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); // Sync the toggle state after onRestoreInstanceState has occurred. mDrawerToggle.syncState(); } @OverrIDe public voID onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // Pass any configuration change to the drawer toggls mDrawerToggle.onConfigurationChanged(newConfig); } @OverrIDe public voID onBackpressed() { if (fragment != null) { FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction() .add(R.ID.frame_container, fragment).commit(); int @R_502_4612@ = 0; fragment = new HomeFragment(); // update selected item and Title, then close the drawer mDrawerList.setItemChecked(@R_502_4612@, true); mDrawerList.setSelection(@R_502_4612@); setTitle(navMenuTitles[@R_502_4612@]); mDrawerLayout.closeDrawer(mDrawerList); } else { // error in creating fragment Log.e("MainActivity", "Error in creating fragment"); } }
它基本上做了什么,它首先到HomeFragment,当我想去另一个片段MediaFragment并决定回去按后退按钮,我想去HomeFragment,当我想关闭应用程序再次按下后退按钮它将现在就像gmail应用程序一样关闭应用程序.我怎样才能做到这一点?我使用我在onBackpressed()中输入的代码时遇到了问题.每当我转到其他片段时,HomeFragment就会显示出来.有任何想法吗?对你的帮助表示感谢.
更新:在我进入MediaFragment并按下后退按钮之前,它会自动关闭应用程序.它不应该是,但它应该去HomeFragment,当它在HomeFragment,我点击后退按钮然后它将关闭应用程序.
解决方法:
为什么不跟踪选择的最后位置,而不是在onBackpressed中复制代码?
@H_301_7@int selected@R_502_4612@ = 0;private voID displayVIEw(int @R_502_4612@) { ... // All your current code selected@R_502_4612@ = @R_502_4612@;}@OverrIDepublic voID onBackpressed() { if (selected@R_502_4612@ != 0) { displayVIEw(0); } else { super.onBackpressed();}总结
以上是内存溢出为你收集整理的Android返回导航器中的第一个片段全部内容,希望文章能够帮你解决Android返回导航器中的第一个片段所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)