Столкнулся c проблемой добавить несколько тагов для маркера. А именно меня интересует добавление почты/номера телефона. Для этого решил создать некую модель для использования данной фичи, не знаю на сколько верно, но всё таки:
public class MarkerTag {
private String email;
private String phoneNumber;
public MarkerTag() {
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
}
Далее прошу обратить Ваше внимание на то, как я собственно потом решил добавлять эти таги к моим маркерам:
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 test"));
tag.setEmail("second@gmail.com");
tag.setPhoneNumber("+37368750588");
marker2.setTag(tag);
Ну и собственно два метода которые я реализовал под эти нужды:
private void makeCall(Marker marker) {
if (null != marker.getTag()) {
if (marker.getTag() instanceof MarkerTag) {
MarkerTag tag = ((MarkerTag) marker.getTag());
Intent call = new Intent(Intent.ACTION_DIAL);
call.setData(Uri.parse("tel:" + String.valueOf(tag.getPhoneNumber())));
startActivity(call);
}
}
}
private void sendEmail(Marker marker) {
if (null != marker.getTag()) {
if (marker.getTag() instanceof MarkerTag) {
MarkerTag tag = ((MarkerTag) marker.getTag());
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);
}
}
}
Но что я получил в конце, теперь по нажатию на любой из двух маркеров, я имею возможность звонить только на один номер, а при выборе отправить email, приложение и вовсе вылетает ошибка:
FATAL EXCEPTION: main Process: com.vm.sai, PID: 2489 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object com.google.android.gms.maps.model.Marker.getTag()' on a null object reference at com.vm.sai.activities.MapsActivity.sendEmail(MapsActivity.java:169) at com.vm.sai.activities.MapsActivity.-wrap1(MapsActivity.java) at com.vm.sai.activities.MapsActivity$2.onClickConfirmed(MapsActivity.java:92) at com.vm.sai.utils.OnInfoWindowElemTouchListener$1.run(OnInfoWindowElemTouchListener.java:84) at android.os.Handler.handleCallback(Handler.java:815) at android.os.Handler.dispatchMessage(Handler.java:104) at android.os.Looper.loop(Looper.java:194) at android.app.ActivityThread.main(ActivityThread.java:5637) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Проблема заключается в том, что после смены разметки, перестал работать обработчик кликов
Всем приветПодскажите, пожалуйста, как преобразовать строчный массив чисел к двумерному числовому?
Вопрос №1 - Почему документ не отображается, а скачивается при открытии странички? Вопрос №2 - Как сделать чтобы фрейм имел высоту и ширину...