当前位置: 首页 > 知识库问答 >
问题:

无法从导航抽屉中的fragment/FragmentActivity中打开FragmentActivity

史钊
2023-03-14

我有一个问题,我不能解决我的应用程序的导航抽屉。导航抽屉中的一个链接是打开一个FragmentActivity(其中包含一个ViewPager)。其他链接是片段。现在,我已经将它设置为启动该活动的意图,但我的一个片段Mapspage出现了错误。和嵌套碎片有关。我会把logcat贴在下面。现在我的NavigationDrawer onClick已经设置好:

@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:”。MapsPage是我的应用程序的核心,它在XML中有一个map片段,这在调用它时导致了一个异常。下面是一个例外:

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)

这是关键错误:

编辑:

<?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>

共有1个答案

於彬
2023-03-14

你在打电话

fm.beginTransaction().add(R.id.main,newFragment).addToBackStack("fragback").commit();

在调用startactivity()之后

 类似资料:
  • 我有一个导航抽屉活动,其中有四个片段都很好。我还有另一个活动,我应该调用一个片段,它与导航抽屉活动有关。我已经修复了从另一个单独的活动中调用片段的问题。这里真正的问题是,如果我在导航抽屉活动中从碎片B上按back,它会返回到主碎片a,如果我从碎片a上按back,它会显示碎片B,实际上应该从应用程序中退出,它不应该显示碎片B。 我试过很多东西,比如:和覆盖导航抽屉活动中的onBackPressed(

  • 我正在使用developer.android.com指南来构建一个应用程序。我在Android Studio做新项目时选择了“导航:导航抽屉”。我已经在互联网上搜索我的问题的答案,但我没有找到任何有效的。抱歉,我是编程新手。 在导航抽屉中单击时,如何使应用程序在主视图中打开一个新的片段? 在导航抽屉中单击时,是否可以使用选项卡打开多个可滑动的片段? 如何使“标题”可展开/可折叠? http://d

  • 就像Android开发者的页面上说的 用户可以通过从屏幕左边缘滑动或通过触摸操作栏上的应用图标将导航抽屉带到屏幕上。 但奇怪的是,我的活动上的导航抽屉对滑动动作没有反应。它只在触摸操作栏上的图标时切换。下面是我对导航抽屉的实现 对此有什么可能的解释吗?我怀疑的是我的活动默认有它的一个片段的布局。所以这是原因吗? 编辑:我的活动的布局文件

  • 所以我有一个活动,其中有一个片段,片段有一个导航抽屉和页面的内容。当我打开抽屉并单击一个项目时,片段被替换为一个新片段。当我按下后退按钮时,我在片段管理器上调用popBackStack,它返回到第一个片段,但导航抽屉是打开的。 有几件事要注意:当按下抽屉中的一个项目时,我在抽屉布局上调用关闭抽屉,当片段被替换时抽屉关闭。如果我按下操作栏中的UP按钮,我可以用新的主片段替换片段容器,但我更喜欢能够将

  • 我有一个导航抽屉应用程序,我需要从应用程序的主屏幕开始。。我有一个问题,当我启动应用程序时,它总是从抽屉菜单的第一项活动开始。。我怎样才能使应用程序从主屏幕开始,主屏幕不在抽屉菜单中,而不是第一项活动!!! 主要活动 导航抽屉碎片 维护。xml 闪屏

  • 我想从右到左像图片一样打开