我正试图与来自活动的碎片交谈。
在我的MainActivity中,我添加了多个片段。
我的主要要求是,如果片段已经添加,我不想添加。
那么我们如何检验这个条件呢?
请帮我一个忙。
代码:-
private void intializingFragments(Fragment fragment) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fragment_container, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
private View.OnClickListener intialization() {
return new View.OnClickListener() {
@Override
public void onClick(View v) {
int getId = v.getId();
if (getId == R.id.first) {
intializingFragments(new Fragment1());
} else if (getId == R.id.second) {
intializingFragments(new Fragment2());
} else if (getId == R.id.third) {
intializingFragments(new Fragment3());
}
}
};
}
8条答案
按热度按时间rqcrx0a61#
您可以使用findFragmentByTag()或findFragmentById()函数来获取片段。如果上述方法返回空值,则该片段不存在。
例如:-http://wiki.workassis.com/android-load-two-fragments-in-one-framelayout/
dfuffjeb2#
您可以在fragmentmanager中找到片段:
或者,您可以添加带有标签的片段:
并按标签查找
t40tm48m3#
试试这个
ff29svar4#
如何在不知道片段的资源ID或标记的情况下检查片段是否存在:
wmvff8tz5#
有很多方法可以跟踪最后添加的片段。最简单的一种是在片段管理器中找到标记。下面是它的示例代码:
或者,您可以使用自己的变量来检查最后添加的片段是否与当前片段相同。下面是它的示例代码:
你可以这样使用它:
n3ipq98p6#
您可以执行popBackStack从管理器的片段返回堆栈弹出最后一个片段转换。如果没有要弹出的内容,则返回false。在此处输入链接说明
pinkon5k7#
你可以从片段管理器中得到以前添加的片段的列表,然后检查列表中是否包含你的片段对象。
crcmnpdw8#
这个不行
这对我有用