У меня проблема, которую я не могу решить с помощью навигационного ящика приложения. Одна из ссылок в навигационном ящике - открыть FragmentActivity (который содержит ViewPager). Другими ссылками являются фрагменты. Сейчас я настроил его как намерение, чтобы начать эту работу, но я получаю сообщение об ошибке в одном из моих фрагментов, MapsPage. Что-то связано с гнездом Фрагментов. Я поставлю логарифм ниже. Это теперь мой NavigationDrawer OnClick устанавливается:Невозможно открыть FragmentActivity из Fragment/FragmentActivity в навигационном ящике
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Fragment newFragment = new MapsPage();
FragmentManager fm = getSupportFragmentManager();
switch(i) {
case 0:
newFragment = new FragOne();
fm.popBackStack();
break;
case 1:
newFragment = new FragTwo();
fm.popBackStack();
break;
case 2:
newFragment = new FragThree();
fm.popBackStack();
break;
case 3:
Intent in = new Intent(getApplicationContext(), FragmentPagerActivity.class);
startActivity(in);
fm.popBackStack();
break;
}
fm.beginTransaction().add(R.id.main, newFragment).addToBackStack("fragback").commit();
drawerLayout.closeDrawer(rl);
}
Моя проблема с "случай 3:". MapPage, который является центральным для моего приложения, имеет фрагмент карты в XML, который вызывает там исключение при вызове этого. Вот исключение:
01-20 18:42:09.302: E/AndroidRuntime(15950): FATAL EXCEPTION: main
01-20 18:42:09.302: E/AndroidRuntime(15950): Process: com.android.package.name, PID: 15950
01-20 18:42:09.302: E/AndroidRuntime(15950): android.view.InflateException: Binary XML file line #7: Error inflating class fragment
01-20 18:42:09.302: E/AndroidRuntime(15950): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
01-20 18:42:09.302: E/AndroidRuntime(15950): at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
01-20 18:42:09.302: E/AndroidRuntime(15950): at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
01-20 18:42:09.302: E/AndroidRuntime(15950): at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
01-20 18:42:09.302: E/AndroidRuntime(15950): at com.mdev.bluestorm.drinki.MapsPage.onCreateView(MapsPage.java:103)
01-20 18:42:09.302: E/AndroidRuntime(15950): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)
01-20 18:42:09.302: E/AndroidRuntime(15950): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
01-20 18:42:09.302: E/AndroidRuntime(15950): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
01-20 18:42:09.302: E/AndroidRuntime(15950): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
01-20 18:42:09.302: E/AndroidRuntime(15950): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
01-20 18:42:09.302: E/AndroidRuntime(15950): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
01-20 18:42:09.302: E/AndroidRuntime(15950): at android.os.Handler.handleCallback(Handler.java:733)
01-20 18:42:09.302: E/AndroidRuntime(15950): at android.os.Handler.dispatchMessage(Handler.java:95)
01-20 18:42:09.302: E/AndroidRuntime(15950): at android.os.Looper.loop(Looper.java:136)
01-20 18:42:09.302: E/AndroidRuntime(15950): at android.app.ActivityThread.main(ActivityThread.java:5017)
01-20 18:42:09.302: E/AndroidRuntime(15950): at java.lang.reflect.Method.invokeNative(Native Method)
01-20 18:42:09.302: E/AndroidRuntime(15950): at java.lang.reflect.Method.invoke(Method.java:515)
01-20 18:42:09.302: E/AndroidRuntime(15950): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
01-20 18:42:09.302: E/AndroidRuntime(15950): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
01-20 18:42:09.302: E/AndroidRuntime(15950): at dalvik.system.NativeStart.main(Native Method)
01-20 18:42:09.302: E/AndroidRuntime(15950): Caused by: java.lang.IllegalArgumentException: Binary XML file line #7: Duplicate id 0x7f060060, tag null, or parent id 0x0 with another fragment for com.google.android.gms.maps.SupportMapFragment
01-20 18:42:09.302: E/AndroidRuntime(15950): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:296)
01-20 18:42:09.302: E/AndroidRuntime(15950): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685)
Это ключевая ошибка:
01-20 18: 42: 09,302: E/AndroidRuntime (15950): Вызванный: java.lang.IllegalArgumentException: Binary XML строка строки # 7: дубликат id 0x7f060060, тег null или родительский идентификатор 0x0 с другим фрагментом для com.google.android.gms.maps.SupportMapFragment
Есть ли что-то, что я могу сделать, чтобы предотвратить это? Мне нужно иметь возможность открывать FragmentActivity из ящика навигации без этой силы, потому что это противоречит фрагменту Google maps Fragment. Мне нужно, чтобы MapPage был частью backstack, единственного на самом деле, поскольку вы можете видеть, что я вывожу backstack для каждой другой страницы.
Я бы очень признателен за помощь в этом, я потерял то, что делать дальше. Заранее спасибо.
EDIT:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment"/>
</RelativeLayout>
Пожалуйста, отправить файл XML, на который ссылается. – PearsonArtPhoto
Отредактированный мой вопрос с XML Фрагмент MapsPage добавлен в нижней части. –