方法getFragmentManager()未定义类型

时间:2014-04-23 13:48:18

标签: java android eclipse google-maps

我使用Android API 19,我想确定我的应用程序上的位置,我可以获取位置或查看GPS和Google播放服务是否启用,没有问题,但当我想显示地图我的问题开始。

我发现一个教程说使用 getFragmentManager 可以做到这一点,但Eclipse给了我这个错误:

The method getFragmentManager() is undefined for the type Mhelper

我的课程是:

package com.example.hach;

import java.io.IOException;
import java.util.List;
import java.util.Locale;
import java.util.concurrent.ExecutionException;

//import com.example.hach.MainActivity.PlaceholderFragment;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;

import android.support.v4.app.FragmentActivity;  
import com.google.android.gms.maps.SupportMapFragment; 

import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.widget.TextView;
import android.widget.Toast;

import android.support.v4.app.* ;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.FragmentManager;

public class Mhelper {
    static final LatLng HAMBURG = new LatLng(53.558, 9.927);
    static final LatLng KIEL = new LatLng(53.551, 9.993);
    private GoogleMap map;

    public void pinpointlocation(Context context){

         map = ((MapFragment) getFragmentManager().findFragmentById(R.id.mapview))
                    .getMap();
                Marker hamburg = map.addMarker(new MarkerOptions().position(HAMBURG)
                    .title("Hamburg"));
                Marker kiel = map.addMarker(new MarkerOptions()
                    .position(KIEL)
                    .title("Kiel")
                    .snippet("Kiel is cool")
                    .icon(BitmapDescriptorFactory
                        .fromResource(R.drawable.ic_launcher)));

                // Move the camera instantly to hamburg with a zoom of 15.
                map.moveCamera(CameraUpdateFactory.newLatLngZoom(HAMBURG, 15));

                // Zoom in, animating the camera.
                map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);
    }
......

然后我搜索了一会儿,找到了很多提供的解决方案,但不是它们对我有用,让我更加困惑。

一个解决方案告诉将Contex传递给函数,但是其他解决方案告诉它是因为我们应该从Fragment构建类扩展然后使用这个函数,其他人说要放这些函数:

import android.support.v4.app.* ;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.FragmentManager;

但同样的错误,其中一个建议使用

((Activity)context).getFragmentManager()

但我得到同样的错误。

即使我使用 getSupportFragmentManager(),但同样的错误。

我该怎么办?我应该创建一个从片段扩展的新类吗?还有其他简单的方法吗?

PS: 我在清单xml中提供了所有类型的权限,我将mapview放在我的布局xml上,他们没有给我任何错误,我给了地图的谷歌api密钥,即使它与此错误无关。

2 个答案:

答案 0 :(得分:0)

尝试以下代码: -

map = ((SupportMapFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.mapview))
                    .getMap();

答案 1 :(得分:-1)

方法getFragmentManager()哪个类?你的Mhelper类没有扩展任何其他类,你没有定义ypur自己的getFragmentManager()方法。那么,它怎么能起作用呢?