【发布时间】:2020-05-02 16:35:22
【问题描述】:
我有一个包含 2 个选项卡的 viewpager 的活动。每个选项卡都是一个包含 2 个子片段的主机片段。第一个片段是使用 FragmentTransactions 打开其他片段的回收视图。我在为他们创建不同的 backstack 时遇到了麻烦。
所以在我的 onBindViewHolder 的 recyclerview 适配器中,我有这样的 onclicklistener:
holder.image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FirstFragment fragment1 = new FirstFragment();
SecondFragment fragment2 = new SecondFragment();
FragmentManager fm = ((FragmentActivity) view.getContext()).getSupportFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
transaction
.replace(R.id.frame_container, fragment2,"Tag")
.addToBackStack(null)
.commit();
}
});
如果我从 recyclerview 进行这样的交易,两个选项卡的后台堆栈是相同的,所以如果我在 tab1 上打开第二个片段,然后在 tab2 上,如果我返回 tab1 并按回,第二个片段在tab2 被弹出。
如果我在 recyclerview 之外的 FirstFragment 中创建一个按钮,并像这样从 FirstFragment 进行片段事务:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.frame_container, SecondFragment.newInstance(), "Tag");
ft.addToBackStack(null);
ft.commit();
}
});
然后它按预期工作,但我想从 recyclerview 做。
有什么办法可以做到吗?
【问题讨论】:
标签: android android-fragments android-recyclerview fragmentmanager