Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Johnny13
1 / 1 / 1
Регистрация: 18.10.2011
Сообщений: 43
#1

Карта в диалоговом окне - Программирование Android

25.10.2016, 13:57. Просмотров 252. Ответов 12
Метки нет (Все метки)

Ребят, подскажите пожалуйста, как запустить googlemap в диалоговом окне.
То что есть - приводит к аварийному закрытию приложения.

Может есть другие хорошие варианты?
Суть задачи - во всплывающем окне сделать поля ввода адреса, если адрес корректен, то сразу же он покажется на карте в этом же всплывающем окне.(скрин того что должно получится приложил)

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {
    Button myButton;
    private GoogleMap mMap;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        myButton = (Button) findViewById(R.id.button);
 
        myButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Dialog dialog = new Dialog(MainActivity.this);
                dialog.setTitle("Address");
                dialog.setContentView(R.layout.address);
                dialog.show();
            }
        });
 
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }
 
    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
 
        // Add a marker in Sydney and move the camera
        LatLng sydney = new LatLng(-34, 151);
        mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
    }
}

address.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:theme="@android:style/Theme.NoTitleBar">
 
    <TextView
        android:text="TextView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:layout_marginStart="154dp"
        android:layout_marginTop="143dp"
        android:id="@+id/textView5" />
 
    <fragment
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:layout_marginStart="101dp"
        android:layout_marginTop="69dp"
        android:id="@+id/map" />
</RelativeLayout>
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2016, 13:57     Карта в диалоговом окне
Посмотрите здесь:

Как поменять цвет Background в диалоговом окне? - Программирование Android
Здравствуйте! Подскажите,пожалуйста, как поменять цвет Background в диалоговом окне?

Программа падает при попытке задать текст TextView в диалоговом окне - Программирование Android
Лог: java.lang.IllegalStateException: Could not execute method of the activity at...

Как отметить две даты на диалоговом Календаре - Программирование Android
И использую библиотеку MaterialDateTimePicker. И мне нужно выделить две даты, точнее у меня две кнопки и по нажатии которых у меня...

карта города - Программирование Android
Только начал создавать приложение и наткнулся на проблему. Подскажите как мне на главный фон приложение поставить карту города, которую...

Карта и маркеры - Программирование Android
Всем привет. Есть у меня конкретная задача, но не знаю, каким путей идти к решению. Есть карта, на ней маркеры (сотни и тысячи...

Собственная карта на Android - Программирование Android
Имею собственную карту куска города. Карту могу перевести в любой векторный формат карты. Хочу сделать чтобы и карта была доступна на...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
shavuz
101 / 107 / 20
Регистрация: 29.01.2014
Сообщений: 534
25.10.2016, 16:33     Карта в диалоговом окне #2
напишите лог аварийного закрытия приложения
Johnny13
1 / 1 / 1
Регистрация: 18.10.2011
Сообщений: 43
25.10.2016, 16:47  [ТС]     Карта в диалоговом окне #3
ошибки не было, но краш похоже происходит во в этом месте, я его заключил в try/catch, крах исчез, но как исправить это?

Java
1
2
3
4
5
6
7
try {
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
} catch (Exception e) {
e.printStackTrace();
}
10-25 14:08:15.360 21936-21936/com.ivango.popup W/System.err: java.lang.NullPointerException
10-25 14:08:15.370 21936-21936/com.ivango.popup W/System.err: at com.ivango.popup.MainActivity.onCreate(MainActivity.java:46)
10-25 14:08:15.370 21936-21936/com.ivango.popup W/System.err: at android.app.Activity.performCreate(Activity.java:5286)
10-25 14:08:15.370 21936-21936/com.ivango.popup W/System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1090)
10-25 14:08:15.370 21936-21936/com.ivango.popup W/System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2233)
10-25 14:08:15.370 21936-21936/com.ivango.popup W/System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2319)
10-25 14:08:15.370 21936-21936/com.ivango.popup W/System.err: at android.app.ActivityThread.access$1100(ActivityThread.java:135)
10-25 14:08:15.370 21936-21936/com.ivango.popup W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1232)
10-25 14:08:15.370 21936-21936/com.ivango.popup W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
10-25 14:08:15.370 21936-21936/com.ivango.popup W/System.err: at android.os.Looper.loop(Looper.java:136)
10-25 14:08:15.380 21936-21936/com.ivango.popup W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5253)
10-25 14:08:15.380 21936-21936/com.ivango.popup W/System.err: at java.lang.reflect.Method.invokeNative(Native Method)
10-25 14:08:15.380 21936-21936/com.ivango.popup W/System.err: at java.lang.reflect.Method.invoke(Method.java:515)
10-25 14:08:15.380 21936-21936/com.ivango.popup W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:939)
10-25 14:08:15.380 21936-21936/com.ivango.popup W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
10-25 14:08:15.380 21936-21936/com.ivango.popup W/System.err: at dalvik.system.NativeStart.main(Native Method)


ошибка вот в этой строке mapFragment.getMapAsync(this); похоже this = null
shavuz
101 / 107 / 20
Регистрация: 29.01.2014
Сообщений: 534
25.10.2016, 16:51     Карта в диалоговом окне #4
this вряд ли наль, или мапфрагмент или гетмап асинк. добавте проверку на наль
Johnny13
1 / 1 / 1
Регистрация: 18.10.2011
Сообщений: 43
25.10.2016, 17:25  [ТС]     Карта в диалоговом окне #5
Продебажил этот участок кода
Миниатюры
Карта в диалоговом окне  
shavuz
101 / 107 / 20
Регистрация: 29.01.2014
Сообщений: 534
25.10.2016, 17:34     Карта в диалоговом окне #6
а, ну все правельно . где new? вы же не создаете фрагмент

Добавлено через 1 минуту
попробуйте так
Java
1
2
3
 FragmentManager fmanager = getSupportFragmentManager();
        Fragment fragment = fmanager.findFragmentById(R.id.map);
        SupportMapFragment supportmapfragment = (SupportMapFragment)fragment;
Добавлено через 5 минут
еще говорят так работает :
Java
1
2
3
4
SupportMapFragment mapFrag = (SupportMapFragment) getSupportFragmentManager()
                    .findFragmentById(R.id.map);
 
            map = mapFrag.getMap();
Pablito
2458 / 1903 / 591
Регистрация: 12.05.2014
Сообщений: 6,711
Завершенные тесты: 1
25.10.2016, 17:36     Карта в диалоговом окне #7
Цитата Сообщение от Johnny13 Посмотреть сообщение
но краш похоже происходит во в этом месте, я его заключил в try/catch, крах исчез, но как исправить это?
боже, еще один ловец NPE трайкетчами
Johnny13
1 / 1 / 1
Регистрация: 18.10.2011
Сообщений: 43
25.10.2016, 17:38  [ТС]     Карта в диалоговом окне #8
Первый вариант приводит к этому
Миниатюры
Карта в диалоговом окне  
Johnny13
1 / 1 / 1
Регистрация: 18.10.2011
Сообщений: 43
25.10.2016, 17:41  [ТС]     Карта в диалоговом окне #9
боже, еще один ловец NPE трайкетчами
Уважаемый, меня лишь недавно пришлось этим заниматься, и вместо того что бы высказывать своё ФЕ, рассказали бы как на Ваш взгляд правильно ловить NPE?
shavuz
101 / 107 / 20
Регистрация: 29.01.2014
Сообщений: 534
25.10.2016, 17:46     Карта в диалоговом окне #10
понял
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        myButton = (Button) findViewById(R.id.button);
 
        myButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Dialog dialog = new Dialog(MainActivity.this);
                dialog.setTitle("Address");
                dialog.setContentView(R.layout.address);
                dialog.show();
            }
        });
 
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }
посмотрите на этот код. вы где ищите фрагмент? в хмл активити а не в диалоге. там его судя по всему нет. просто для проверки вставьте этот код в хмл активити
XML
1
2
3
4
5
6
7
8
9
<fragment
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:layout_marginStart="101dp"
        android:layout_marginTop="69dp"
        android:id="@+id/map" />
и посмотрите что будет. если сработает. уберайте диалог, создавайте диалог фрагмент и уже в его онкриейт просите карты

Добавлено через 1 минуту
на счет трай\кеч, в вашем случае вообще не ловят наль. его там просто не должно быть, если же все таки надо поймать наль, делают иф(обьект !=наль)
Johnny13
1 / 1 / 1
Регистрация: 18.10.2011
Сообщений: 43
25.10.2016, 17:52  [ТС]     Карта в диалоговом окне #11
((( вставил fragment в xml activity_main, всё по прежнему((

буду смотреть fragmentDialog, надеюсь поможет
klim76
20 / 14 / 2
Регистрация: 10.06.2016
Сообщений: 135
26.10.2016, 12:24     Карта в диалоговом окне #12
Johnny13, почитайте - https://developer.android.com/guide/...i/dialogs.html
и напилите уже class myDialog extends DialogFragment
и в нем уже пытайтесь найти фрагмент карты и получить ее асинхронно. Работа точно такая же как и с обычными фраментами
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2016, 20:00     Карта в диалоговом окне
Еще ссылки по теме:

GPS + растровая карта - Программирование Android
Добрый день Как привязать gps координаты к растровой карте? Карту сделал банально скриншотом из карт Гугл. Я так думаю надо сделать...

Вторая SIM карта - Программирование Android
У меня телефон с двумя симками разных операторов (китайский). Подскажите как сделать вызов номера через ВТОРУЮ карту? Как отправить...

Интерактивная карта ГЛК - Программирование Android
Всем доброго времени суток! Необходимо разработать мобильное приложение, интерактивную карту горнолыжного комплекса. Огромная просьба,...

Интерактивная карта здания - Программирование Android
Подскажите пожалуйста, появилась в необходимости создания интерактивной карты здания( в которой будет навигация от одной точки до другой с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Johnny13
1 / 1 / 1
Регистрация: 18.10.2011
Сообщений: 43
26.10.2016, 20:00  [ТС]     Карта в диалоговом окне #13
Подскажите пожалуйста, как сделать чтобы findFragmentById(R.id.map); брал ресурс из layout подключенный в LayoutInflater
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
myButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
 
                View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.address, null);
 
                final Dialog dialog = new Dialog(MainActivity.this);
                dialog.setTitle("Address");
                dialog.setContentView(view);
                dialog.show();
 
                Button close = (Button) dialog.findViewById(R.id.btnClose);
                Button save = (Button) dialog.findViewById(R.id.btnSave);
 
                close.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        dialog.cancel();
                    }
                });
 
                save.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        dialog.cancel();
                    }
                });
 
 
                    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                            .findFragmentById(R.id.map);
                            mapFragment.getMapAsync(new OnMapReadyCallback() {
                        @Override
                        public void onMapReady(GoogleMap googleMap) {
                            LatLng sydney = new LatLng(-34, 151);
                            googleMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
                            googleMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
                        }
                    });
                
            }
 
 
        });
Yandex
Объявления
26.10.2016, 20:00     Карта в диалоговом окне
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru