Мультитаги для маркера

290
21 марта 2017, 11:23

Столкнулся 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)

READ ALSO
Не работает onClickListener во View

Не работает onClickListener во View

Проблема заключается в том, что после смены разметки, перестал работать обработчик кликов

250
Как преобразовать String[] к int[][]

Как преобразовать String[] к int[][]

Всем приветПодскажите, пожалуйста, как преобразовать строчный массив чисел к двумерному числовому?

270
Загрузка документа из iframe и его демонстрация на странице HTML [требует правки]

Загрузка документа из iframe и его демонстрация на странице HTML [требует правки]

Вопрос №1 - Почему документ не отображается, а скачивается при открытии странички? Вопрос №2 - Как сделать чтобы фрейм имел высоту и ширину...

329