我有一个包含 3 个选项卡的 Activity :A、B 和 C。对于每个选项卡,我创建了一个 fragment (-f) 和演示者 (-p)。问题是所有三个 fragment (A-f、B-f、C-f)都是相同的,但演示者却不同。那么问题是如何避免代码重复?我尝试创建一个 BaseFragment 并从 A-f、B-f、C-f 扩展它,但是如果我在 A-f 中并且 C-f 发生了某些事情(例如 UI 更新),那么我会收到
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.support.v7.widget.RecyclerView.setVisibility(int)”
,因为此时的 C-f 已被破坏(我是对吗?)我不想创建 3 个具有相同布局的相同 fragment 。
最佳答案
我做过类似的事情,我发现使用 View 更简单并且错误更少。在执行各种事务时,android fragment 管理器有时会表现出不可预测的行为。以下是其工作原理的快速示例:
YourActivity extends Activity {
View a,b,c;
@Override
protected void onCreate(Bundle savedInstanceState) {
a = getLayoutInflater().inflate(R.layout.YOUR_LAYOUT_ID, null);
b = getLayoutInflater().inflate(R.layout.YOUR_LAYOUT_ID, null);
c = getLayoutInflater().inflate(R.layout.YOUR_LAYOUT_ID, null);
}
}
该 Activity 是 Android 的演示者/ Controller ,所以我会继续并在这里拥有逻辑,而不是现在定义演示者类。在每次按下选项卡时,您可以控制要显示的 View 。我没有看到您执行 fragment 转换的代码,因此我无法确定您的 fragment 是否被破坏。
关于java - 不同演示者的相同 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45363029/