java - 不同演示者的相同 fragment

标签 java android android-fragments

我有一个包含 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/

相关文章:

java - 尝试将两个按钮绘制在彼此之上

android - 如何为不同的估计信标设置不同的ID?

java - fragment Popbackstack 调用替换我的根 fragment

java - RecyclerView 不滚动

java - JTextArea 中的控制台 out.print

Android Google map 集群项目标记与动态图像 URL - 使用所有标记覆盖 URL

android - 在旋转时恢复嵌套 fragment

java - 我得到 fragment id 无 View

java - 如何修复我的 Java 代码以验证变量?

java - 从 Web 服务分页填充 ListView