图形页面谷歌地图NullPointerException异常?

编程入门 行业动态 更新时间:2024-10-26 04:31:36
本文介绍了图形页面谷歌地图NullPointerException异常?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我试图创建一个如何获得使用图形页面。我创建了一个片段和XML来使用。问题是,当我尝试打开的MapView抛出一个 NullPointerException异常但我不能undertand原因。

我怎么能解决呢?

XML

<的LinearLayout    的xmlns:机器人=htt​​p://schemas.android/apk/res/android    机器人:方向=垂直    机器人:layout_width =match_parent    机器人:layout_height =match_parent>    < com.google.android.gms.maps.MapView        机器人:ID =@ + ID /图形页面        机器人:layout_width =match_parent        机器人:layout_height =160dp        机器人:layout_marginRight =10dp/>< / LinearLayout中>

分片

公共类FormComoChegarEm preSA延伸片段{    MapView类MapView类;    私人GoogleMap的GoogleMap的;    私人最终字符串标记=的getClass()getSimpleName()+ - >中。    @覆盖    公共无效的onCreate(捆绑savedInstanceState){        super.onCreate(savedInstanceState);        。((CustomDrawerLayout)getActivity())getSupportActionBar()隐藏();    }    @覆盖    公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,捆绑savedInstanceState){        查看查看= inflater.inflate(R.layouto_chegar_em preSA,容器,FALSE);        图形页面=(图形页面)view.findViewById(R.id.mapView);        返回视图。    }    @覆盖    公共无效onActivityCreated(捆绑savedInstanceState){        super.onActivityCreated(savedInstanceState);        setMapView();    }    私人无效setMapView(){        尝试{            MapsInitializer.initialize(getActivity()getApplicationContext());        }赶上(例外五){            e.printStackTrace();        }        GoogleMap的= mapView.getMap();        //经纬度        双纬度= 17.385044;        双经度= 78.486671;        //创建标记        的MarkerOptions标记=新的MarkerOptions()位置(                新的经纬度(纬度,经度))标题(你好图)。        //更改标记图标        marker.icon(BitmapDesc​​riptorFactory                .defaultMarker(BitmapDesc​​riptorFactory.HUE_ROSE));        //添加标记        googleMap.addMarker(标记);        CameraPosition cameraPosition =新CameraPosition.Builder()                。.TARGET(新经纬度(17.385044,78.486671))变焦(12).build();        googleMap.animateCamera(CameraUpdateFactory                .newCameraPosition(cameraPosition));        //此处执行任何相机更新    }}

例外

显示java.lang.NullPointerException            在br.package.myapp.frags.FormComoChegarEm presa.setMapView(FormComoChegarEm presa.java:80)            在br.package.myapp.frags.FormComoChegarEm presa.onActivityCreated(FormComoChegarEm presa.java:56)            在android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1794)            在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:967)            在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)            在android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)            在android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)            在android.support.v4.app.FragmentManagerImpl $ 1.run(FragmentManager.java:454)            在android.os.Handler.handleCallback(Handler.java:733)            在android.os.Handler.dispatchMessage(Handler.java:95)            在android.os.Looper.loop(Looper.java:157)            在android.app.ActivityThread.main(ActivityThread.java:5356)            在java.lang.reflect.Method.invokeNative(本机方法)            在java.lang.reflect.Method.invoke(Method.java:515)            在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1265)            在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)            在dalvik.system.NativeStart.main(本机方法)

解决方案

我面临着同样的问题,我在的GoogleMap和MapView的第一次尝试。

问题是,当你初始化地图,它需要很短的一段时间来加载(这它在背景中)。当您从图形页面获得的情况下,GoogleMap的价值仍然是空(未初始化)。

您需要使用 OnMapLoadedCallback 在这里。加入此回调的一个实例给的GoogleMap 右后 GoogleMap的= mapView.getMap(); 。回调的身体有一个称为函数 onMapLoaded(),其中你将以下code:

googleMap.addMarker(标记);CameraPosition cameraPosition =新CameraPosition.Builder()        。.TARGET(新经纬度(17.385044,78.486671))变焦(12).build();googleMap.animateCamera(CameraUpdateFactory        .newCameraPosition(cameraPosition));

和任何为这样的人的GoogleMap<&成员GT; 。我添加下面的编辑code你放心。

私人无效setMapView(){    尝试{        MapsInitializer.initialize(getActivity()getApplicationContext());    }赶上(例外五){        e.printStackTrace();    }    GoogleMap的= mapView.getMap();    googleMap.setOnMapLoadedCallback(新OnMapLoadedCallback()    {        @覆盖        公共无效onMapLoaded()        {            //经纬度                双纬度= 17.385044;                双经度= 78.486671;                //创建标记                的MarkerOptions标记=新的MarkerOptions()位置(                    新的经纬度(纬度,经度))标题(你好图)。                //更改标记图标                marker.icon(BitmapDesc​​riptorFactory                        .defaultMarker(BitmapDesc​​riptorFactory.HUE_ROSE));                //添加标记                googleMap.addMarker(标记);                CameraPosition cameraPosition =新CameraPosition.Builder()                        。.TARGET(新经纬度(17.385044,78.486671))变焦(12).build();                googleMap.animateCamera(CameraUpdateFactory                        .newCameraPosition(cameraPosition));            //此处执行任何相机更新        }    });  }

I'm trying create a How to get using MapView. I created a Fragment and a XML to use that. The problem is when I try open the MapView throws a NullPointerException but I can't undertand why.

How could I solve it ?

XML

<LinearLayout xmlns:android="schemas.android/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <com.google.android.gms.maps.MapView android:id="@+id/mapView" android:layout_width="match_parent" android:layout_height="160dp" android:layout_marginRight="10dp" /> </LinearLayout>

The Fragment

public class FormComoChegarEmpresa extends Fragment{ MapView mapView; private GoogleMap googleMap; private final String TAG = getClass().getSimpleName() + "->"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ((CustomDrawerLayout)getActivity()).getSupportActionBar().hide(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { View view = inflater.inflate(R.layouto_chegar_empresa, container, false); mapView = (MapView)view.findViewById(R.id.mapView); return view; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); setMapView(); } private void setMapView() { try { MapsInitializer.initialize(getActivity().getApplicationContext()); } catch (Exception e) { e.printStackTrace(); } googleMap = mapView.getMap(); // latitude and longitude double latitude = 17.385044; double longitude = 78.486671; // create marker MarkerOptions marker = new MarkerOptions().position( new LatLng(latitude, longitude)).title("Hello Maps"); // Changing marker icon marker.icon(BitmapDescriptorFactory .defaultMarker(BitmapDescriptorFactory.HUE_ROSE)); // adding marker googleMap.addMarker(marker); CameraPosition cameraPosition = new CameraPosition.Builder() .target(new LatLng(17.385044, 78.486671)).zoom(12).build(); googleMap.animateCamera(CameraUpdateFactory .newCameraPosition(cameraPosition)); // Perform any camera updates here } }

Exception

java.lang.NullPointerException at br.package.myapp.frags.FormComoChegarEmpresa.setMapView(FormComoChegarEmpresa.java:80) at br.package.myapp.frags.FormComoChegarEmpresa.onActivityCreated(FormComoChegarEmpresa.java:56) at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1794) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:967) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:454) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:157) at android.app.ActivityThread.main(ActivityThread.java:5356) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) at dalvik.system.NativeStart.main(Native Method)

解决方案

I've faced the same issue with my first attempt at GoogleMap and MapView.

The issue is that when you init the map, it takes a short while to load (which it does in the background). When you obtain the instance from the MapView, the value of the GoogleMap is still null (not initialized).

You need to use OnMapLoadedCallback here. Add an instance of this callback to the googleMap right after googleMap = mapView.getMap();. The callback body has a function called onMapLoaded(), wherein you place the following code:

googleMap.addMarker(marker); CameraPosition cameraPosition = new CameraPosition.Builder() .target(new LatLng(17.385044, 78.486671)).zoom(12).build(); googleMap.animateCamera(CameraUpdateFactory .newCameraPosition(cameraPosition));

and anything as the likes of 'googleMap.<member>'. I'm adding the edited code below for your ease.

private void setMapView() { try { MapsInitializer.initialize(getActivity().getApplicationContext()); } catch (Exception e) { e.printStackTrace(); } googleMap = mapView.getMap(); googleMap.setOnMapLoadedCallback(new OnMapLoadedCallback() { @Override public void onMapLoaded() { // latitude and longitude double latitude = 17.385044; double longitude = 78.486671; // create marker MarkerOptions marker = new MarkerOptions().position( new LatLng(latitude, longitude)).title("Hello Maps"); // Changing marker icon marker.icon(BitmapDescriptorFactory .defaultMarker(BitmapDescriptorFactory.HUE_ROSE)); // adding marker googleMap.addMarker(marker); CameraPosition cameraPosition = new CameraPosition.Builder() .target(new LatLng(17.385044, 78.486671)).zoom(12).build(); googleMap.animateCamera(CameraUpdateFactory .newCameraPosition(cameraPosition)); // Perform any camera updates here } }); }

更多推荐

图形页面谷歌地图NullPointerException异常?

本文发布于:2023-10-12 01:32:24,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1483380.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:图形   异常   页面   地图   NullPointerException

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!