无法在Fragment中解析方法'getSupportFragmentManager()'

时间:2014-12-11 14:46:40

标签: android google-maps android-fragments fragment

我发现消息无法解析方法' 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();

14 个答案:

答案 0 :(得分:68)

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

答案 1 :(得分:44)

对于我的情况, 我确保从

导入 Fragment
  

android.support.v4.app.Fragment

不是来自

  

android.app.Fragment

然后我用了

  

getActivity()getSupportFragmentManager();

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

答案 2 :(得分:30)

扩展 FragmentActivity 而非活动

答案 3 :(得分:13)

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

答案 4 :(得分:12)

使用getActivity().getSupportFragmentManager()

答案 5 :(得分:6)

您也可以使用AppCompatActivity代替活动 然后getSupportFragmentManager()将起作用 而且也不要忘记在这种情况下让你的App主题扩展AppCompat主题

答案 6 :(得分:5)

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

public class MainActivity extends AppCompatActivity {
}

答案 7 :(得分:3)

  

getFragmentManager()

试试吧。这适用于我的案例

答案 8 :(得分:2)

getSupportFragmentManager()不是Fragment的一部分,所以你无法通过这种方式获得它。您可以使用普通<{1}}从父Activity获取(最早在onAttach()

activity.getSupportFragmentManager();

或者您可以尝试getChildFragmentManager(),这是片段范围内的,但需要API17 +

答案 9 :(得分:2)

你应该使用

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

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

答案 10 :(得分:1)

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

this.getSupportFragmentManager()

在处理android

中的DialogFragments时,它对我有用

答案 11 :(得分:1)

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

答案 12 :(得分:0)

我尝试了以上所有,但没有工作

最后尝试了我自己的

getBaseActivity().getFragmentManager()

正在工作.. :))

答案 13 :(得分:0)

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

import android.support.v4.app.DialogFragment;

然后使用:

getActivity().getFragmentManager()