具有不同演示者的相同片段

时间:2017-07-28 00:27:49

标签: java android android-fragments

我有一个包含3个标签的活动:A,B& C.对于每个标签,我都创建了一个片段(-f)和演示者(-p)。问题是所有三个片段(A-f,B-f,C-f)是相同的,但演示者不是。所以问题是如何避免代码欺骗?我试图创建一个BaseFragment并从A-f,B-f,C-f扩展它,但是如果我在A-f并且有些事情发生在C-f(比如UI更新),那么我会收到 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setVisibility(int)' on a null object reference,因为此处的C-f被销毁了(我是对的吗?)我不想创建具有相同布局的3个相同片段。

1 个答案:

答案 0 :(得分:1)

我已经做了类似的事情,我发现使用视图更简单,更少的错误。在执行各种事务时,android片段管理器可能会出现不可预测的行为。以下是它如何运作的快速示例:

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);
      }
}

活动是android的演示者/控制器,所以我会继续在这里使用逻辑,而不是现在定义一个演示者类。在每个选项卡上,您可以控制要显示的视图。我没有看到您正在执行片段转换的代码,因此我无法确定您的片段是否已被销毁。