【问题标题】:Cannot resolve method 'getSupportFragmentManager ( )' inside Fragment无法解析 Fragment 内的方法“getSupportFragmentManager ()”
【发布时间】:2015-02-10 02:18:18
【问题描述】:

我发现消息无法解析方法 'getSupportFragmentManager ( )' 我想分段作为活动。 因为我想在标签页滑动时使用地图。

public class PETAcikarangsukatani extends Fragment {
Context context;

private static final LatLng SUKATANI = new LatLng(-6.171327, 107.178108);
private static final LatLng WRPOJOK = new LatLng(-6.222411, 107.162158);
private static final LatLng PILAR = new LatLng(-6.257033, 107.156472);
private static final LatLng CIKARANG = new LatLng(-6.256073, 107.143984);


GoogleMap googleMap;
final String TAG = "PathGoogleMapActivity";

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.activity_path_google_map, container, false);
    context = rootView.getContext();

    SupportMapFragment fm = (SupportMapFragment)getSupportFragmentManager()
            .findFragmentById(R.id.map);
    googleMap = fm.getMap();

【问题讨论】:

标签: android google-maps android-fragments fragment


【解决方案1】:

Fragment 子类中,您必须使用getFragmentManager 代替getSupportFragmentManager。如果导入来自支持库,您将获得支持。

【讨论】:

  • 什么意思,但仍然没有运行
  • 您还必须更改fragmrnt xml,从:android:name="com.google.android.gms.maps.SupportMapFragment" 到 android:name="com.google.android.gms。 maps.MapFragment"
  • 考虑在片段中使用 getChildFragmentManager() 而不是 getFragmentManager() 或 getSupportFragmentManager()。
【解决方案2】:

就我而言, 我确保 Fragment 类是从

导入的

android.support.v4.app.Fragment

不是来自

android.app.Fragment

那我用过

getActivity().getSupportFragmentManager();

现在它的工作。如果我使用我在 onAttach() 中获得的活动实例也不工作。

【讨论】:

  • 这是一个重要提示:您必须添加 v4 android 支持才能工作。
【解决方案3】:

扩展 FragmentActivity 而不是 Activity

【讨论】:

  • 如您所见,topicstarter 询问的是Fragment 问题而不是Activity 问题。
  • 你拯救了我的一天。非常感谢:)
  • 糟糕!你没有直接回答提问者的问题,但我的!你解决了。谢谢+1
  • 你也可以使用AppCompatActivity
  • 谢谢!它正在工作。我的类是从 FragmentActivity 继承的,编译结束得很好。
【解决方案4】:

使用getActivity().getSupportFragmentManager()

【讨论】:

    【解决方案5】:

    getSupportFragmentManager()替换为getFragmentManager() 如果你在 api 21 中工作。 如果您的应用支持早于 3.0 的 Android 版本,请确保您已按照设置项目以使用库中所述使用支持库设置您的 Android 项目,并且这次使用getSupportFragmentManager()

    【讨论】:

    【解决方案6】:

    您也可以使用 AppCompatActivity 代替 Activity。
    然后getSupportFragmentManager() 就可以了。
    在这种情况下也不要忘记让您的 App 主题扩展 AppCompat 主题

    【讨论】:

      【解决方案7】:

      根据文档,getSupportFragmentManager() 仅存在于 AppCompatActivity 类中。它不存在于 Activity 类中。因此,请确保您的类扩展了 AppCompatActivity 类。

      public class MainActivity extends AppCompatActivity {
      }
      

      【讨论】:

        【解决方案8】:

        getSupportFragmentManager() 不是Fragment 的一部分,因此您无法在此处获取它。您可以使用普通方法从父级Activity (最早在onAttach() 中)获取它

        activity.getSupportFragmentManager();
        

        或者你可以试试getChildFragmentManager(),属于Fragment的范围,但是需要API17+

        【讨论】:

          【解决方案9】:

          getFragmentManager()

          试试这个。它适用于我的情况

          【讨论】:

            【解决方案10】:

            你应该使用

            getActivity.getSupportFragmentManager() like
            //in my fragment 
            SupportMapFragment fm = (SupportMapFragment)    
            getActivity().getSupportFragmentManager().findFragmentById(R.id.map);
            

            我也有这个问题,但在getSupportFragmentManager 之前添加getActivity() 后解决了。

            【讨论】:

              【解决方案11】:

              如果您收到“无法解析方法 getSupportFragmentManager()”,请尝试使用

              this.getSupportFragmentManager()
              

              在 android 中处理 DialogFragments 时它适用于我

              【讨论】:

                【解决方案12】:

                如果您要实例化 android.support.v4.app.Fragment 类,则必须调用 getActivity().getSupportFragmentManager() 以摆脱无法解决的问题。然而,Google 的 Fragment 上的官方 Android 文档倾向于忽略这个简单的问题,并且他们仍然在没有 getActivity() 前缀的情况下记录它。

                【讨论】:

                  【解决方案13】:

                  对我来说,我确保像这样导入 v4:

                  import android.support.v4.app.DialogFragment;
                  

                  然后使用:

                  getActivity().getFragmentManager()
                  

                  【讨论】:

                    【解决方案14】:

                    以上方法我都试过了

                    终于自己试了

                    getBaseActivity().getFragmentManager()
                    

                    并且正在工作.. :)

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2021-08-28
                      • 1970-01-01
                      • 2012-08-23
                      • 1970-01-01
                      • 2021-03-28
                      • 1970-01-01
                      • 2016-03-30
                      • 1970-01-01
                      相关资源
                      最近更新 更多