我正在使用TabLayout和ViewPager在我的应用中显示标签。我只有两个标签。这两个选项卡使用相同的片段(不同的实例),每个片段中都有一个回收器。每个回收商都会显示不同的数据。
在我的FragmentPagerAdapter
中,我这样做:
@Override
public Fragment getItem(int position) {
Bundle bundle = new Bundle();
if (position == 0) {
bundle.putString(TreinamentosFragment.EXTRA_TIPO, TreinamentosFragment.TIPO_PENDENTE);
} else {
bundle.putString(TreinamentosFragment.EXTRA_TIPO, TreinamentosFragment.TIPO_CONCLUIDO);
}
Fragment fragment = new TreinamentosFragment();
fragment.setArguments(bundle);
return fragment;
}
通过这种方法,我能够在运行时知道每个片段的类型 并在Web服务中获取正确的信息以显示。
但问题是,当用户在Fragment A中并以某种方式与其中一个回收器项进行交互时,我从适配器中删除了这个项目,我需要将此项放在Fragment B的适配器中。我这样做?如何恢复Fragment B的特定实例并更改其适配器?
我想在不使用任何事件总线的情况下这样做。
我的片段A和B已经在另一个片段中,因为我也使用了导航抽屉。
答案 0 :(得分:1)
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>openejb-core</artifactId>
<version>4.7.2</version>
<scope>provided</scope>
</dependency>
答案 1 :(得分:0)
您需要使用Singleton数据类。
https://en.wikipedia.org/wiki/Singleton_pattern
您有2个适配器,那么您需要两个Singleton Data类。当您从Fragment-A中删除项目时,请在Frag-B s Singleton Data instance. As Fragment-B resume/visible the just reload data from Frag-B
的Singleton Data实例中添加该已删除的项目。
无事件总线解决方案.. :)
public class SingletonDemo {
private static volatile SingletonDemo instance = null;
private SingletonDemo() { }
public static synchronized SingletonDemo getInstance() {
if (instance == null) {
instance = new SingletonDemo();
}
return instance;
}
}