【问题标题】:Cannot call getSupportFragmentManager() from activity无法从活动中调用 getSupportFragmentManager()
【发布时间】:2012-11-06 18:50:44
【问题描述】:

我有一个包含片段的活动。

XML:

 <fragment android:name="com.example.androidcalculator.ResultFragment"
            android:id="@+id/result_fragment"
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

我想从Activity中的一个方法调用ResultFragment中的一个方法,但是getSupportFragmentManager“不存在”:

FragmentManager fragMan = getSupportFragmentManager();

我该如何解决这个问题?

【问题讨论】:

    标签: android android-activity android-fragments


    【解决方案1】:

    您的活动没有从支持库扩展 FragmentActivity,因此该方法不存在于超类中

    如果您的目标是 api 11 或更高版本,您可以改用 Activity.getFragmentManager

    【讨论】:

    • FragmentManager 现已弃用。
    • 不完全正确,您应该使用 AndroidX FragmentManager。
    • 我在这里使用的是 ComponentActivity 而不是 AppcompactActivity 并且在 componentActivity getsupportManger() 中出现错误 anyiIdea
    【解决方案2】:

    将课程扩展到AppCompatActivity 而不是Activity

    【讨论】:

      【解决方案3】:

      从父级获取当前活动,然后使用此代码

      getActivity().getSupportFragmentManager()
      

      【讨论】:

      • 也可以试试 FragmentManager fragMan = getFragmentManager();
      【解决方案4】:

      简单使用

       FragmentManager fm = getActivity().getSupportFragmentManager();
      

      在 MainLayout 使用中访问片段膨胀时,请务必记住 铸造或getActivity()

      【讨论】:

        【解决方案5】:

        您需要扩展FragmentActivity 而不是Activity

        【讨论】:

          【解决方案6】:

          导入

          import android.support.v4.app.FragmentActivity;
          import android.support.v4.app.FragmentManager;
          

          【讨论】:

          • 这里只导入是不够的——你还得从FragmentActivity继承。
          【解决方案7】:

          这对我有用。运行 android API 19 及更高版本。

          FragmentManager fragMan = getFragmentManager();
          

          【讨论】:

            【解决方案8】:
            getCurrentActivity().getFragmentManager()
            

            【讨论】:

              【解决方案9】:

              代替

              extends Fragment
              

              使用

              extends android.support.v4.app.Fragment 
              

              这对我有用。 *API14 及以上版本

              【讨论】:

                【解决方案10】:

                我用FragmentActivity

                TabAdapter = new TabPagerAdapter(((FragmentActivity) getActivity()).getSupportFragmentManager());
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2021-08-28
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-12-15
                  相关资源
                  最近更新 更多