【问题标题】:getActivity() in fragment is null after orientation change方向更改后片段中的 getActivity() 为空
【发布时间】:2013-12-31 06:44:34
【问题描述】:

我有关于 startActivityForResult、片段和方向更改的问题。

我从一个片段调用 startActivityForResult(),然后打开附加片段的第二个活动。在第二个活动中,当我改变方向并返回第一个活动时,会调用 onActivityResult(片段方法)。但是有一个问题,因为我有这样的东西:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    getActivity(); //here's a problem because 
    //getActivity is null but only after orientation change on second activity 
}

【问题讨论】:

    标签: android android-activity android-fragments orientation fragment


    【解决方案1】:

    您需要在调用 getActivity() 之前调用所需的 super,如下所示:

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        getActivity();
    }
    

    【讨论】:

      【解决方案2】:

      这为我解决了:

      private Activity activity;
      
      @Override
      public void onActivityCreated(@Nullable Bundle savedInstanceState) {
          super.onActivityCreated(savedInstanceState);
          this.activity = getActivity();
      }
      

      并在您需要的片段中的任何位置使用此活动。

      【讨论】:

        【解决方案3】:

        所有的问题是我没有为 XML 中的片段声明 android:id。 Android 需要 ID 或 TAG 来识别存储的片段并复制其中的所有元素。所以伙计们,请记住 - 每个片段实例都需要唯一的 id 或标签!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多