Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 563
Записей в блоге: 1
#1

Запутался в фрагментах и транзакциях с GoogleMaps? - Программирование Android

27.02.2016, 17:59. Просмотров 442. Ответов 13
Метки нет (Все метки)

есть активити, в которой по кнопке меняются фрагменты (их пока всего два), один из этих фрагментов карта Гугл, когда по кнопке меняю на второй все ок но если опять первый щелкнуть то вылетает проблем и ругается на inflate :

Ошиба:
Кликните здесь для просмотра всего текста
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
FATAL EXCEPTION: main
                                                                    Process: com.dis., PID: 12316
                                                                    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dis./com.dis..MainActivity}: android.view.InflateException: Binary XML file line #8: Error inflating class fragment
                                                                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2358)
                                                                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2410)
                                                                        at android.app.ActivityThread.access$800(ActivityThread.java:155)
                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1331)
                                                                        at android.os.Handler.dispatchMessage(Handler.java:110)
                                                                        at android.os.Looper.loop(Looper.java:193)
                                                                        at android.app.ActivityThread.main(ActivityThread.java:5395)
                                                                        at java.lang.reflect.Method.invokeNative(Native Method)
                                                                        at java.lang.reflect.Method.invoke(Method.java:515)
                                                                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:837)
                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:653)
                                                                        at dalvik.system.NativeStart.main(Native Method)
                                                                     Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class fragment
                                                                        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
                                                                        at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
                                                                        at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
                                                                        at com.dis..MapGoogle.onCreateView(MapGoogle.java:33)
                                                                        at android.app.Fragment.performCreateView(Fragment.java:1700)
                                                                        at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:890)
                                                                        at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1040)
                                                                        at android.app.Activity.onCreateView(Activity.java:4851)
                                                                        at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:34)
                                                                        at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:79)
                                                                        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
                                                                        at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
                                                                        at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
                                                                        at com.dis..MapGoogle.onCreateView(MapGoogle.java:33)
                                                                        at android.app.Fragment.performCreateView(Fragment.java:1700)
                                                                        at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:890)
                                                                        at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)
                                                                        at android.app.BackStackRecord.run(BackStackRecord.java:698)
                                                                        at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447)
                                                                        at android.app.Activity.performStart(Activity.java:5286)
                                                                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2331)
                                                                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2410)*
                                                                        at android.app.ActivityThread.access$800(ActivityThread.java:155)*
                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1331)*
                                                                        at android.os.Handler.dispatchMessage(Handler.java:110)*
                                                                        at android.os.Looper.loop(Looper.java:193)*
                                                                        at android.app.ActivityThread.main(ActivityThread.java:5395)*
                                                                        at java.lang.reflect.Method.invokeNative(Native Method)*
                                                                        at java.lang.reflect.Method.invoke(Method.java:515)*
                                                                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:837)*
                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:653)*
                                                                        at dalvik.system.NativeStart.main(Native Method)*
                                                                     Caused by: java.lang.IllegalArgumentException: Binary XML file line #8: Duplicate id 0x7f0c0089, tag null, or parent id 0x7f0c006e with another fragment for com.google.android.gms.maps.MapFragment
                                                                        at android.app.Activity.onCreateView(Activity.java:4837)
                                                                        at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:34)
                                                                        at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:79)
                                                                        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
                                                                        at android.view.LayoutInflater.inflate(LayoutInflater.java:469)*
                                                                        at android.view.LayoutInflater.inflate(LayoutInflater.java:397)*
                                                                        at com.dis..MapGoogle.onCreateView(MapGoogle.java:33)*
                                                                        at android.app.Fragment.performCreateView(Fragment.java:1700)*
                                                                        at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:890)*
                                                                        at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1040)*
                                                                        at android.app.Activity.onCreateView(Activity.java:4851)*
                                                                        at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:34)*
                                                                        at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:79)*
                                                                        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)*
                                                                        at android.view.LayoutInflater.inflate(LayoutInflater.java:469)*
                                                                        at android.view.LayoutInflater.inflate(LayoutInflater.java:397)*
                                                                        at com.dis..MapGoogle.onCreateView(MapGoogle.java:33)*
                                                                        at android.app.Fragment.performCreateView(Fragment.java:1700)*
                                                                        at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:890)*
                                                                        at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)*
                                                                        at android.app.BackStackRecord.run(BackStackRecord.java:698)*
                                                                        at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447)*
                                                                        at android.app.Activity.performStart(Activity.java:5286)*
                                                                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2331)*
                                                                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2410)*
                                                                        at android.app.ActivityThread.access$800(ActivityThread.java:155)*
                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1331)*
                                                                        at android.os.Handler.dispatchMessage(Handler.java:110)*
                                                                        at android.os.Looper.loop(Looper.java:193)*
                                                                        at android.app.ActivityThread.main(ActivityThread.java:5395)*
                                                                        at java.lang.reflect.Method.invokeNative(Native Method)*
                                                                        at java.lang.reflect.Method.invoke(Method.java:515)*
                                                                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:837)*
                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:653)*
                                                                        at dalvik.system.NativeStart.main(Native Method)*


Иксамэль:
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
 
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/gmap"
    tools:context=".MapGoogle"
    android:name="com.google.android.gms.maps.MapFragment" />
 
    </LinearLayout>


Фрагмент MapGoogle:
Кликните здесь для просмотра всего текста
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
public class MapGoogle extends Fragment implements OnMapReadyCallback {
MainActivity ma;
    private Boolean isFabOpen = false;
    private GoogleMap mMap;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.maps_google, container, false);
 
        MapFragment mapFragment = (MapFragment) getFragmentManager()
                .findFragmentById(R.id.gmap);
        mapFragment.getMapAsync(this);
 
        return view;
    }
 
 
    @Override
    public void onMapReady(GoogleMap googleMap) {
        googleMap.addMarker(new MarkerOptions()
                .position(new LatLng(0, 0))
                .title("Marker"));
    }
}


МэйнАктивити (где показываются эти фрагменты):
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
mapGoogle = new MapGoogle(); //фрагмент 1
        ChtotoEcshe = new ChtotoEcshe(); //фрагмент 2
        ft = getFragmentManager().beginTransaction();
 
        ft.setCustomAnimations(
                R.anim.card_flip_right_in, R.anim.card_flip_right_out,
                R.anim.card_flip_left_in, R.anim.card_flip_left_out);
//  ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
        ft.add(R.id.container_body, mapGoogle);
 
        //ft.replace(R.id.container_body, mapGoogle);
        ft.addToBackStack(null);
        ft.commit();
//.... далее их замена кнопкой
 
case R.id.button1:
                ft.replace(R.id.container_body, ChtotoEcshe); //все гуд меняется
//....
 case R.id.button2:
                ft.replace(R.id.container_body, mapGoogle); //происходит ошибка


ошибка ссылается на эту строку в MapGoogle -
Java
1
View view = inflater.inflate(R.layout.maps_google, container, false);
что не так может быть, подскажите пожалуйста?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2016, 17:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запутался в фрагментах и транзакциях с GoogleMaps? (Программирование Android):

NavigationView на фрагментах - Программирование Android
Всем привет! Нужен совет. Задача банальная. Приложение с NavigationView + Toolbar, доступ к которому должен быть с любой активити в...

View во фрагментах - Программирование Android
Чтобы прикрепить вид к layout в onCreateView мы раздуваем вид таким образом: View view = inflater.inflate(R.layout.fragment_mylayout,...

Спрятать SearchView в некоторых фрагментах - Программирование Android
Всем привет, такой вопрос: Есть NavigationDrawer В одном фрагменте реализован viewPager , там 2 фрагмента и в каждом searchView в...

Что использовать во фрагментах вместо getIntent() ? - Программирование Android
Всем привет! Пытаюсь из одной активности во фрагмент передать данные. Метод getIntent().getExtras() не работает, подчеркнут красным. С...

Можно ли рисовать лупу не во всех фрагментах? - Программирование Android
Недавно подключил ActionBar с поиском, использовал такой тьюториал: http://www.androidhive.info/2013/11/android-working-with-action-bar/....

Автокомплит + GoogleMaps - Программирование Android
У меня есть отдельно приложения, которые: первое приложение - осуществляет автокомплит адресов(имеет поле, в которое пользователь вводит...

13
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 563
Записей в блоге: 1
29.02.2016, 10:10  [ТС] #2
?
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
29.02.2016, 10:25 #3
Цитата Сообщение от disx Посмотреть сообщение
<fragment
По-моему, это для статических фрагментов. Для динамических используйте FrameLayout или другие контейнеры.
0
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 563
Записей в блоге: 1
29.02.2016, 11:54  [ТС] #4
CoolMind, т.е. так:

XML
1
2
3
4
5
6
7
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/gmap"
    tools:context=".MapGoogle"
    android:name="com.google.android.gms.maps.MapFragment" />
тогда при запуске такая вылетает:

Кликните здесь для просмотра всего текста
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
FATAL EXCEPTION: main
                                                                Process: com.dis.pro, PID: 396
                                                                java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dis.pro/com.dis.pro.MainActivity}: java.lang.NullPointerException
                                                                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2358)
                                                                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2410)
                                                                    at android.app.ActivityThread.access$800(ActivityThread.java:155)
                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1331)
                                                                    at android.os.Handler.dispatchMessage(Handler.java:110)
                                                                    at android.os.Looper.loop(Looper.java:193)
                                                                    at android.app.ActivityThread.main(ActivityThread.java:5395)
                                                                    at java.lang.reflect.Method.invokeNative(Native Method)
                                                                    at java.lang.reflect.Method.invoke(Method.java:515)
                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:837)
                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:653)
                                                                    at dalvik.system.NativeStart.main(Native Method)
                                                                 Caused by: java.lang.NullPointerException
                                                                    at com.dis.pro.MapGoogle.onCreateView(MapGoogle.java:37)
                                                                    at android.app.Fragment.performCreateView(Fragment.java:1700)
                                                                    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:890)
                                                                    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)
                                                                    at android.app.BackStackRecord.run(BackStackRecord.java:698)
                                                                    at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447)
                                                                    at android.app.Activity.performStart(Activity.java:5286)
                                                                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2331)
                                                                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2410)*
                                                                    at android.app.ActivityThread.access$800(ActivityThread.java:155)*
                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1331)*
                                                                    at android.os.Handler.dispatchMessage(Handler.java:110)*
                                                                    at android.os.Looper.loop(Looper.java:193)*
                                                                    at android.app.ActivityThread.main(ActivityThread.java:5395)*
                                                                    at java.lang.reflect.Method.invokeNative(Native Method)*
                                                                    at java.lang.reflect.Method.invoke(Method.java:515)*
                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:837)*
                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:653)*
                                                                    at dalvik.system.NativeStart.main(Native Method)*
02-29 11:38:41.567 422-422/? E/Zygote: Zygote:  error closing descriptor
                                       libcore.io.ErrnoException: close failed: EBADF (Bad file number)
                                           at libcore.io.Posix.close(Native Method)
                                           at libcore.io.BlockGuardOs.close(BlockGuardOs.java:75)
                                           at com.android.internal.os.ZygoteInit.closeServerSocket(ZygoteInit.java:221)
                                           at com.android.internal.os.ZygoteConnection.handleChildProc(ZygoteConnection.java:879)
                                           at com.android.internal.os.ZygoteConnection.runOnce(ZygoteConnection.java:242)
                                           at com.android.internal.os.ZygoteInit.runSelectLoop(ZygoteInit.java:713)
                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:649)
                                           at dalvik.system.NativeStart.main(Native Method)
02-29 11:38:41.914 15211-15262/? E/MDM: [46259] b.run: Couldn't connect to Google API client: ConnectionResult{statusCode=API_UNAVAILABLE, resolution=null, message=null}
02-29 11:38:41.973 367-367/? E/AuthorizationBluetoothService: Proximity feature is not enabled.
02-29 11:38:51.121 674-691/? E/WindowManager: Starting window AppWindowToken{439a7820 token=Token{4392be20 ActivityRecord{42e1f970 u0 com.dis.pro/.MainActivity t174}}} timed out
02-29 11:39:00.015 897-897/? E/MyTag: updateClock : 11:39
02-29 11:39:00.017 897-897/? E/MyTag: updateClock : 11:39
02-29 11:39:00.026 897-897/? E/MyTag: updateClock : 11:39
02-29 11:39:00.057 690-690/? E/Zygote: Zygote:  error closing descriptor
                                       libcore.io.ErrnoException: close failed: EBADF (Bad file number)
                                           at libcore.io.Posix.close(Native Method)
                                           at libcore.io.BlockGuardOs.close(BlockGuardOs.java:75)
                                           at com.android.internal.os.ZygoteInit.closeServerSocket(ZygoteInit.java:221)
                                           at com.android.internal.os.ZygoteConnection.handleChildProc(ZygoteConnection.java:879)
                                           at com.android.internal.os.ZygoteConnection.runOnce(ZygoteConnection.java:242)
                                           at com.android.internal.os.ZygoteInit.runSelectLoop(ZygoteInit.java:713)
                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:649)
                                           at dalvik.system.NativeStart.main(Native Method)


Добавлено через 12 минут
и так попробовал:

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
 
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/gmap"
    tools:context=".MapGoogle"
    android:name="com.google.android.gms.maps.MapFragment" />
 
    </FrameLayout>
загрузилось норм а дальше как в первом посте...
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
29.02.2016, 12:03 #5
XML
1
android:name="com.google.android.gms.maps.SupportMapFragment"
не поможет?
ну и в коде где этот фрагмент находится, писать
Java
1
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.gmap);
1
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
29.02.2016, 12:08 #6
Цитата Сообщение от disx Посмотреть сообщение
NullPointerException at com.dis.pro.MapGoogle.onCreateView(MapGoogle.java:37)
Что здесь? Уж могли бы поглядеть.
0
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 563
Записей в блоге: 1
29.02.2016, 12:46  [ТС] #7
Паблито, попробую

CoolMind, дак гледел
Java
1
mapFragment.getMapAsync(this);
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
29.02.2016, 13:13 #8
Цитата Сообщение от disx Посмотреть сообщение
дак гледел
дак чего же не написел?
Очевидно, mapFragment = null, т.е. вы его неправильно создаёте.
0
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 563
Записей в блоге: 1
29.02.2016, 20:03  [ТС] #9
CoolMind, дак вродеж все по правильному, как в гугловом примере:

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
public class MapGoogle extends Fragment implements OnMapReadyCallback {
MainActivity ma;
    private Boolean isFabOpen = false;
    private GoogleMap mMap;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.maps_google, container, false);
 
        MapFragment mapFragment = (MapFragment) getFragmentManager()
                .findFragmentById(R.id.gmap);
        mapFragment.getMapAsync(this);
 
        return view;
    }
 
 
    @Override
    public void onMapReady(GoogleMap googleMap) {
        googleMap.addMarker(new MarkerOptions()
                .position(new LatLng(0, 0))
                .title("Marker"));
    }
}
единственное что там класс наследуется от FragmentActivity, но я тогда не понимаю как её в отображать в container'е основной активности?
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
01.03.2016, 10:55 #10
disx, наверное, тема фрагментов вам ещё не очень знакома. Поэтому, думаю, оставьте, как есть из документации. Т.е. можно вернуть <fragment>.
FragmentActivity обязателен для использования с фрагментами, но у него есть множество наследников. Например, AppCompatActivity или ActionBarActivity. В этом случае используйте наследника.
Также можно использовать Support-библиотеки (для совместимости со старыми версиями Андроида). В этом случае в большинстве методов будет указано слово Support. Т.е. вам нужно определить у себя, какие библиотеки импортируете, не должно быть конфликтов (фрагменты - одной версии с FragmentManager и т.д.).
Честно говоря, долго разбираться, вам надо обязательно это сделать самостоятельно, я тоже много шишек набивал.
1
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 563
Записей в блоге: 1
01.03.2016, 13:25  [ТС] #11
CoolMind, спасибо за поддержку, но таки нашел решение (правда не знаю на сколько оно изящное):

Кликните здесь для просмотра всего текста
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
45
46
47
View view = inflater.inflate(R.layout.maps_google, container, false);
 
        try
        {
 
            // Gets the MapView from the XML layout and creates it
            mapView = (MapView) view.findViewById(R.id.gmap);
 
            mapView.onCreate(savedInstanceState);
            mapView.onResume();
            // Gets to GoogleMap from the MapView and does initialization stuff
            mMap = mapView.getMap();
            // Changing map type
            mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
            // googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
            // googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
            // googleMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
            // googleMap.setMapType(GoogleMap.MAP_TYPE_NONE);
 
            // Showing / hiding your current location
            mMap.setMyLocationEnabled(false);
 
            // Enable / Disable zooming controls
            mMap.getUiSettings().setZoomControlsEnabled(true);
 
            // Enable / Disable my location button
            mMap.getUiSettings().setMyLocationButtonEnabled(true);
 
            // Enable / Disable Compass icon
            mMap.getUiSettings().setCompassEnabled(true);
 
            // Enable / Disable Rotate gesture
            mMap.getUiSettings().setRotateGesturesEnabled(true);
 
            // Enable / Disable zooming functionality
            mMap.getUiSettings().setZoomGesturesEnabled(true);
 
            mMap.addMarker(new MarkerOptions()
                    .position(new LatLng(0, 0))
                    .title("Marker"));
 
            MapsInitializer.initialize(this.getActivity());
        }
        catch(Exception e)
        {
            System.out.println(e);
        }


а в Иксамэле поменять вместо fragment
XML
1
2
3
4
5
6
7
8
<com.google.android.gms.maps.MapView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/gmap"
    tools:context="com.dis.pro.MapGoogle"
    android:name="com.google.android.gms.maps.MapFragment"
     />
и все теперь безошибочно крутится в container.
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
01.03.2016, 14:32 #12
disx, я тоже когда-то парился таким вопросом. Это не то решение. Это для Maps v1. Вам нужны Maps v2, современные. И API_KEY для них будете получать.
1
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 563
Записей в блоге: 1
02.03.2016, 12:35  [ТС] #13
CoolMind, понял, буду дальше ковыряться...

Добавлено через 21 час 21 минуту
CoolMind, все работает, вот так:

XML
1
2
3
4
5
6
7
8
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
 
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="2"
android:name="com.google.android.gms.maps.MapFragment"
android:id="@+id/gmap" />
Кликните здесь для просмотра всего текста
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 MapGoogle extends Fragment {
private MapFragment mSupportMapFragment;
 
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.maps_google, container, false);
 
 
        mSupportMapFragment = (MapFragment)getChildFragmentManager().findFragmentById(R.id.gmap);
        if (mSupportMapFragment == null) {
            FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            mSupportMapFragment = MapFragment.newInstance();
            fragmentTransaction.replace(R.id.gmap, mSupportMapFragment).commit();
        }
 
        if (mSupportMapFragment != null) {
            mSupportMapFragment.getMapAsync(new OnMapReadyCallback() {
                @Override
                public void onMapReady(GoogleMap googleMap) {
                    if (googleMap != null) {
 
                        googleMap.getUiSettings().setAllGesturesEnabled(true);
 
                        //-> marker_latlng // MAKE THIS WHATEVER YOU WANT
 
                        CameraPosition cameraPosition = new CameraPosition.Builder().target(MOUNTAIN_VIEW).zoom(15.0f).build();
                        CameraUpdate cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition);
                        googleMap.moveCamera(cameraUpdate);
 
                    }
 
                }
            });
        }


жалко что с API 17 в моем случае работает (анимации в транзакциях мешают), но учитывая статистику версий не парюсь особо.
1
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
02.03.2016, 14:17 #14
disx, ну вот, совсем другое дело!
Не совсем понял про анимации и API 17. Если анимации отключить, то должно работать с API 4.
0
02.03.2016, 14:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.03.2016, 14:17
Привет! Вот еще темы с ответами:

GoogleMaps и эмулятор - Программирование Android
Здравствуйте. Есть небольшая проблема с эмулятором и картами. Суть того, что я хочу сделать: запустить базовый MapActivity на эмуляторе. В...

Googlemaps + onBackPressed - Программирование Android
в общем откуда то взялась проблема... Имеется фрагмент №1 с картой с него переход на №2 с указанием точного &quot;адреса ручками&quot; во втором...

Всплывающее окно с GoogleMaps - Программирование Android
Всем добрый день! Возникла проблема с созданием &quot;мобильной карты&quot;. Есть приложение, его основная функция - показывать координаты...

Проложение пути в GoogleMaps - Программирование Android
Здравствуйте. В приложение используются карты гугл. При загрузки карты показываются несколько маркеров (рисунок 1). При нажатии вручную на...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

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