Java 谷歌地图当前位置
我有一个非常复杂的应用程序,有各种不同的功能。其中一个功能包括谷歌地图选项卡。应用程序的结构使得每个选项卡都是一个片段。 在这种特殊情况下,我很难声明我的谷歌地图对象来获取我当前的位置数据 这是相关代码 在这个代码实现中,当我试图声明mMap时,我得到一个空指针异常。如果删除getAvtivity()调用,eclipse会告诉我不能对非静态方法进行静态引用。如果我删除mMap行,我的应用程序将在一个选项卡中与谷歌地图一起工作(其他选项卡实现了所有工作的其他功能)。试试这个Java 谷歌地图当前位置,java,android,google-maps,Java,Android,Google Maps,我有一个非常复杂的应用程序,有各种不同的功能。其中一个功能包括谷歌地图选项卡。应用程序的结构使得每个选项卡都是一个片段。 在这种特殊情况下,我很难声明我的谷歌地图对象来获取我当前的位置数据 这是相关代码 在这个代码实现中,当我试图声明mMap时,我得到一个空指针异常。如果删除getAvtivity()调用,eclipse会告诉我不能对非静态方法进行静态引用。如果我删除mMap行,我的应用程序将在一个选项卡中与谷歌地图一起工作(其他选项卡实现了所有工作的其他功能)。试试这个 GoogleMap m
GoogleMap mMap = ((SupportMapFragment) getFragmentManager()
.findFragmentById(R.id.map)).getMap();
在您的xml中
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment" />
能否包含布局xml 如果您的地图片段是
SupportMapFragment
(com.google.android.gms.maps.SupportMapFragment
),请使用:
mMap=((SupportMapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap()代码>
或
如果地图片段是MapFragment
(com.google.android.gms.maps.MapFragment
),请使用:
编辑:
OP问题的实际答案是:
在布局XML中声明映射片段时,请确保使用了正确的类名。为什么要创建getView(…)
static?在GpsClass
中,试着将代码放在natachfragments下,花一些时间将其附加到活动。在这种情况发生之前,有时我们会得到NullPointerException如果您像这样使用它会发生什么mMap=((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.mymap)).getMap()
???@SimplePlan您的意思是什么?要使用v2,您的片段
需要扩展SupportMapFragment
而不是片段
,正如我在问题中提到的那样。我不能那样做。无法从FragmentActivity类型对非静态方法getSupportFragmentManager()进行静态引用您的答案几乎正确。但是,必须调用getActivity()函数。如果不是,我会得到前面提到的静态方法错误。所以最后你的答案只对了一半。在这个答案中,我在哪里说过要使用getSupportFragmentManager..我说过要使用getFragmentManager()..但错误不在你身上..它在xml文件中没有..我也说了tat na..使用SupportMapFragment@Seahawksrdabest他不能从FragmentActivity类型中静态引用非静态方法getSupportFragmentManager()。他在问题中已经说过了。@Ani Fichadia:你间接地发现了我的解决方案。我所做的只是更改xml以匹配com.google.android.gms.maps.SupportMapFragment。然后砰的一声,它开始工作了@SeahawksRdaBest这是我也告诉过你的。你为什么不接受我的答案。请至少给我一票。@LalgetSupportFragmentManager()
不可用,因为他使用的是Fragment
而不是FragmentActivity
,但是getFragmentManager()
在Fragment
中受支持@SeahawksRdaBest:是的,我犯了一个错误,在布局中声明地图片段时没有使用正确的类值。很高兴这对你有用:)对我上面所说的稍加澄清,如果你使用getActivity().getSupportFragmentManager()
,这是合法的,因为getActivity()
返回一个FragmentActivity
(其中getSupportFragmentManager()
是实际定义的)。但是,在片段中,
getSupportFragmentManager()
未定义为方法,而getFragmentManager()
定义为方法。只需使用getFragmentManager()
而不是getActivity().getSupportFragmentManager()
来查找片段就可以了
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment" />
mMap = ((MapFragment) getFragmentManager ().findFragmentById (R.id.map)).getMap ();