Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 类型的方法getFragmentManager()未定义_Java_Android_Eclipse_Google Maps - Fatal编程技术网

Java 类型的方法getFragmentManager()未定义

Java 类型的方法getFragmentManager()未定义,java,android,eclipse,google-maps,Java,Android,Eclipse,Google Maps,我使用Android API 19,我想在我的应用程序上精确定位一个位置,我可以获取位置,或者查看GPS和Google play服务是否启用,这些都没有问题,但当我想显示地图时,我的问题就开始了 我发现一个教程说usegetFragmentManager可以做到这一点,但Eclipse给了我以下错误: The method getFragmentManager() is undefined for the type Mhelper 我的班级是: package com.example.hach

我使用Android API 19,我想在我的应用程序上精确定位一个位置,我可以获取位置,或者查看GPS和Google play服务是否启用,这些都没有问题,但当我想显示地图时,我的问题就开始了

我发现一个教程说usegetFragmentManager可以做到这一点,但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(),但同样的错误

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

附言: 我在清单xml中授予了所有类型的权限,我将mapview放在布局xml上,他们没有给我任何错误,我为map提供了google api密钥,即使这与此错误无关。

请尝试以下代码:-

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

方法getFragmentManager()属于哪个类?Mhelper类不扩展任何其他类,也不定义ypur自己的getFragmentManager()方法。那么,它是如何工作的呢?

使用getSupportFragmentManager()代替它。我使用了它,同样的错误。您正在使用片段支持库。因此,使用getSupportFragmentManager()代替getFragmentManager()。它给了我一个类型为mHelpPeruse getApplicationContext()而不是getActivity()的方法getActivity()未定义。您的解决方案是?使用getSupportFragmentManager()方法,您需要从FragmentActivity扩展类或在类中传递FragmentActivity实例,并使用((FragmentActivity)上下文)。getSupportFragmentManager()语句