我使用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密钥,即使它与此错误无关。
答案 0 :(得分:0)
尝试以下代码: -
map = ((SupportMapFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.mapview))
.getMap();
答案 1 :(得分:-1)
方法getFragmentManager()哪个类?你的Mhelper类没有扩展任何其他类,你没有定义ypur自己的getFragmentManager()方法。那么,它怎么能起作用呢?