
我想通过按“后退”按钮返回到另一个片段.我已经读过,addToBackStack(字符串标记)应该有所帮助,但实际上并没有起作用.
这是切换片段时的 *** 作.
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();ft.setCustomAnimations(R.anim.slIDe_in_left, R.anim.slIDe_out_right);ft.replace(R.ID.content_frame, new MainFragment());ft.addToBackStack("Mainfragment");ft.commit();因此,现在打开“片段”,并启动一个AsyncTask,其中出现一个加载圆圈.加载后,将显示数据.现在,当我按一下“后退”按钮一次时,该片段返回到AsyncTask的开始处,在该处创建了加载圆圈.但是AsyncTask不会继续.当我再次按返回按钮时,该应用程序将关闭.
我试图添加onBackpressed,但它只是告诉我,这在Fragment中不起作用.去这里最好的方法是什么?
编辑以澄清:
没有错只是不起作用.就像我什至没有addToBackStack这一行–
解决方法:
之前我遇到过同样的情况,最终得到了这个解决方案.添加或替换Fragment时,需要使用唯一名称将其添加到backStack.然后,当按下后退按钮时,您可以在创建Fragment的FragmentActivity中使用下面的方法查看哪个片段是活动片段.
private String getCurrentFragmentname() { int backStackEntryCount = getSupportFragmentManager().getBackStackEntryCount(); String fragmentname; if (backStackEntryCount > 0) { fragmentname = getSupportFragmentManager().getBackStackEntryAt(backStackEntryCount - 1).getname(); } else { fragmentname = ""; } return fragmentname;}并在onKeyDown()方法中执行以下 *** 作.
if (keyCode == KeyEvent.KEYCODE_BACK && getCurrentFragmentname().equals("your fragment name")) { // Handle back press for this case. return true; } else if (keyCode == KeyEvent.KEYCODE_BACK && getCurrentFragmentname().equals("your another fragment")) { // Handle back press for another Fragment return true; } else { return super.onKeyDown(keyCode, event); }这就是我使用backStack添加Fragment的地方
transaction.addToBackStack("Your Fragment name"); 总结 以上是内存溢出为你收集整理的android-通过按“后退”按钮返回片段全部内容,希望文章能够帮你解决android-通过按“后退”按钮返回片段所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)