android - 片段替换再次引起问题
问题描述
我的活动 XML
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/contentFrame1"
android:layout_width="match_parent"
android:layout_height="match_parent"></FrameLayout>
</android.support.design.widget.CoordinatorLayout>
我有一个从活动的 onCreate 调用的 attachView 方法
@Override
protected void attachView() {
// Get the fragment from dagger
getFragmentManager().
beginTransaction().
setCustomAnimations(R.animator.slide_up, 0, 0, R.animator.slide_down).
replace(R.id.contentFrame1, new MatchFragment2()).
addToBackStack("MatchFragment").
commit();
getFragmentManager().executePendingTransactions();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
getFragmentManager().
beginTransaction().
setCustomAnimations(R.animator.slide_up, 0, 0, R.animator.slide_down).
replace(R.id.contentFrame1, new VictorFragment()).
addToBackStack("VictorFragment").
commit();
getFragmentManager().executePendingTransactions();
getFragmentManager().getBackStackEntryCount(); //this reads 2
}
}, 3000);
}
当我从 VictorFragment 返回时,我看到了 MatchFragment。VictorFragment 不应该是场景中唯一存在的片段并且从它按下应该退出活动吗?
解决方案
删除您对该addToBackStack()
方法的调用。
当您在 aFragmentTransaction
上调用它时,您是在告诉系统您希望它“记住”交易并允许您通过按后退按钮“撤消”它。因此,如果您不希望后退按钮取消VictorFragment
并重新显示MatchFragment2
,那么您不应该调用该addToBackStack()
事务。
推荐阅读
- java - 从Java翻译成R的代码中的函数调用堆栈问题
- c++ - 如何加快大字符串的解析?
- java - 多个查询的组合结果的 Spring 数据分页
- java - 不能应用于 java.lang.String Java 记录
- java - 有没有办法让 solr 返回一个突出显示查询匹配的pdf?
- cd-rom - 当表不包含大小时,如何从路径表中读取 iso9660 上的目录?
- javascript - React 组件问题(';' 预期,但发现 ',')
- javascript - 如何在 CSS 更改之间切换
- python - 如何为Python中的用户字符串输入分配数值
- php - “邮件错误:以下发件人地址失败:contact@domain.net:在未连接的情况下调用 Mail()”