【发布时间】:2014-12-15 08:33:16
【问题描述】:
public void drawMarker(ArrayList<Datamodel> arrModel) {
if(map!=null)
{
String lat = "";
String lng = "";
SharedPreferences prefs = getActivity().getSharedPreferences("Value",
Context.MODE_PRIVATE);
locationEnabledisablevalue = prefs.getString("GpsEnableValue", "1");
if (!locationEnabledisablevalue.equals("1")) {
map.clear();
return;
}
for (int i = 0; i < arrModel.size(); i++) {
// Drawing marker on the map
Datamodel datamodel = arrModel.get(i);
// Getting the latitude of the i-th location
lat = datamodel.lat;
// Getting the longitude of the i-th location
lng = datamodel.lon;
LatLng point = null;
if (lat != "" && lng != "") {
point = new LatLng(Double.parseDouble(lat),
Double.parseDouble(lng));
}
// Creating an instance of MarkerOptions
MarkerOptions markerOptions = new MarkerOptions();
// Setting latitude and longitude for the marker
markerOptions.position(point);
markerOptions.title(datamodel.contactName);
if (datamodel.id
.equals(((HomeActivity) getActivity()).NotifcationRecciverid)) {
String ContactLat = "";
String ContactLng = "";
String Notificationlat = ((HomeActivity) getActivity()).notifcationlat;
String Notificationlng = ((HomeActivity) getActivity()).notifcationlng;
String Notifcationreccvierid = ((HomeActivity) getActivity()).NotifcationRecciverid;
try {
DataBaseManager db = new DataBaseManager(getActivity());
Cursor cursor = db.fetchContactInfo(Notifcationreccvierid);
if (cursor != null && cursor.moveToFirst()) {
ContactLat = cursor
.getString(cursor
.getColumnIndex(DataProviderConstants.CONTACT_LAT_COLUMN));
ContactLng = cursor
.getString(cursor
.getColumnIndex(DataProviderConstants.CONTACT_LON_COLUMN));
cursor.close();
}
} catch (NullPointerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
float distance = AdapterHome.findDistance(
Double.parseDouble(Notificationlat),
Double.parseDouble(Notificationlng),
Double.parseDouble(ContactLat),
Double.parseDouble(ContactLng));
String time = ((HomeActivity) getActivity()).NotifcationDatetime;
markerOptions
.snippet(((HomeActivity) getActivity()).nOtifcationMessge
+ " " + Functions.curentdatetimeprint(time));
marker = map.addMarker(markerOptions);
LatLng myPoint = new LatLng(Double.parseDouble(ContactLat),
Double.parseDouble(ContactLng));
// // Move the camera instantly to hamburg with a zoom of 15.
map.moveCamera(CameraUpdateFactory.newLatLngZoom(myPoint, 15));
//
// // Zoom in, animating the camera.
map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);
// if (distance < 250) {
marker.showInfoWindow();
// }
// }
} else {
markerOptions.snippet(datamodel.phoneNumber);
map.addMarker(markerOptions);
}
}
}
这是我在谷歌地图上的代码显示标记。在 public void onResume() 方法中我调用这个 drawMarker(arrModel);但有时应用程序崩溃并在行显示错误 Logcat 问题
.SharedPreferences prefs = getActivity().getSharedPreferences("Value",
Context.MODE_PRIVATE);
locationEnabledisablevalue = prefs.getString("GpsEnableValue", "1");
Logcat:-
12-15 10:29:02.494: E/AndroidRuntime(16303): FATAL EXCEPTION: main
12-15 10:29:02.494: E/AndroidRuntime(16303): java.lang.NullPointerException
12-15 10:29:02.494: E/AndroidRuntime(16303): at com.locii.fragment.FragHome.drawMarker(FragHome.java:347)
12-15 10:29:02.494: E/AndroidRuntime(16303): at com.lociiapp.HomeActivity$UpdateUserLocation.onPostExecute(HomeActivity.java:530)
12-15 10:29:02.494: E/AndroidRuntime(16303): at com.lociiapp.HomeActivity$UpdateUserLocation.onPostExecute(HomeActivity.java:1)
12-15 10:29:02.494: E/AndroidRuntime(16303): at android.os.AsyncTask.finish(AsyncTask.java:631)
12-15 10:29:02.494: E/AndroidRuntime(16303): at android.os.AsyncTask.access$600(AsyncTask.java:177)
12-15 10:29:02.494: E/AndroidRuntime(16303): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
12-15 10:29:02.494: E/AndroidRuntime(16303): at android.os.Handler.dispatchMessage(Handler.java:99)
12-15 10:29:02.494: E/AndroidRuntime(16303): at android.os.Looper.loop(Looper.java:137)
12-15 10:29:02.494: E/AndroidRuntime(16303): at android.app.ActivityThread.main(ActivityThread.java:5136)
12-15 10:29:02.494: E/AndroidRuntime(16303): at java.lang.reflect.Method.invokeNative(Native Method)
12-15 10:29:02.494: E/AndroidRuntime(16303): at java.lang.reflect.Method.invoke(Method.java:525)
12-15 10:29:02.494: E/AndroidRuntime(16303): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
12-15 10:29:02.494: E/AndroidRuntime(16303): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
12-15 10:29:02.494: E/AndroidRuntime(16303): at dalvik.system.NativeStart.main(Native Method)
请告诉我如何解决这个问题,我无法设置空指针异常。
【问题讨论】:
-
显示行:FragHome.java:347
-
public void drawMarker(ArrayList
arrModel) 这个方法是347号线 -
第347行是哪个语句,不能是方法签名
-
.SharedPreferences prefs = getActivity().getSharedPreferences("Value", Context.MODE_PRIVATE); locationEnabledisablevalue = prefs.getString("GpsEnableValue", "1");
-
在一个不相关的注释上,问题中实际上是
.SharedPreferences吗?
标签: android