我有 1 个主要 Activity 和 4 个 fragment 。每个 fragment 都有相同的方法名,每个 fragment 做不同的事情(初始化数据相同,每个 fragment 对数据做的事情不同)。
目前我检查哪个 fragment 处于 Activity 状态并调用该方法:
if (getSupportFragmentManager().findFragmentByTag("f1") != null)
Objects.requireNonNull((FragmentF1) getSupportFragmentManager().findFragmentByTag("f1")).setupData(true);
else if (getSupportFragmentManager().findFragmentByTag("f2") != null)
Objects.requireNonNull((FragmentF2) getSupportFragmentManager().findFragmentByTag("f2")).setupData(true);
我想调用那个方法,不管我现在有什么 fragment 。是否可以?
此外,requireNonNull 是为了避免 lint 警告,尽管我在上面的一行中执行了 null 检查,有没有办法让这段代码更清晰?
最佳答案
您可以为 fragment 创建基类或抽象类
public abstract class BaseFragment extends AppCompatActivity {
abstract void setupData(boolean b);
}
然后每个 fragment 继承自 BaseFragment 类并覆盖 setupData(boolean b)
。
找到 fragment 后,检查他是否是 BaseFragment 的实例并调用该方法
Fragment fragment = getSupportFragmentManager().findFragmentByTag("tag")
if (fragment instanceof BaseFragment){
fragment.setupData(true);
}
关于Android:在不同的 fragment 中调用相同的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57011327/