【发布时间】:2017-03-19 21:16:11
【问题描述】:
像在回答中一样创建了 i 模型。 还在标记中添加了标签:
MarkerTag tag = new MarkerTag();
Marker marker = map.addMarker(new MarkerOptions()
.position(new LatLng(47.045029, 28.861427))
.title("Marker")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
.snippet("Population: 4,137,400"));
tag.setEmail("first@gmail.com");
tag.setPhoneNumber("+37369490007");
marker.setTag(tag);
Marker marker2 = map.addMarker(new MarkerOptions()
.position(new LatLng(47.000327, 28.867950))
.title("Marker")
.snippet("Population: 4,137,400 fdfsfsfsdfsfdsfsfssfsfsfsfsfs"));
tag.setEmail("second@gmail.com");
tag.setPhoneNumber("+37368750588");
marker2.setTag(tag);
Marker marker3 = map.addMarker(new MarkerOptions()
.position(new LatLng(47.024204, 28.889236))
.title("Marker")
.snippet("Population: 4,137,400 /n dasdasdas d"));
tag.setEmail("three@gmail.com");
tag.setPhoneNumber("+37369339092");
marker3.setTag(tag);
并添加了我的方法:
private void makeCall(Marker marker) {
MarkerTag tag = ((MarkerTag)marker.getTag());
if (tag != null) {
Intent call = new Intent(Intent.ACTION_DIAL);
call.setData(Uri.parse("tel:" + String.valueOf(tag.getPhoneNumber())));
startActivity(call);
}
}
private void sendEmail(Marker marker) {
MarkerTag tag = ((MarkerTag)marker.getTag());
if (tag != null) {
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, "subject");
intent.putExtra(Intent.EXTRA_TEXT, "text");
intent.setData(Uri.parse("email:" + String.valueOf(tag.getEmail())));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
checkAndStart(this, intent, R.string.action_settings);
}
}
但是现在当我按下标记时,我只得到一个数字,这个
37369339092 当我尝试发送电子邮件时,我发现了错误: 233 26548-26548/com.vm.sai E/AndroidRuntime:致命异常:主要 进程:com.vm.sai,PID:26548 java.lang.NullPointerException:尝试调用虚拟方法 'java.lang.Object com.google.android.gms.maps.model.Marker.getTag()' 在空对象引用上 在 com.vm.sai.activities.MapsActivity.sendEmail(MapsActivity.java:168) 在 com.vm.sai.activities.MapsActivity.-wrap1(MapsActivity.java) 在 com.vm.sai.activities.MapsActivity$2.onClickConfirmed(MapsActivity.java:92) 在 com.vm.sai.utils.OnInfoWindowElemTouchListener$1.run(OnInfoWindowElemTouchListener.java:84) 在 android.os.Handler.handleCallback(Handler.java:815) 在 android.os.Handler.dispatchMessage(Handler.java:104) 在 android.os.Looper.loop(Looper.java:194) 在 android.app.ActivityThread.main(ActivityThread.java:5637) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
【问题讨论】:
标签: java android google-maps google-maps-markers