Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在DialogFragment中膨胀类片段时出错_Java_Android_Android Fragments_Android Fragmentactivity_Android Dialogfragment - Fatal编程技术网

Java 在DialogFragment中膨胀类片段时出错

Java 在DialogFragment中膨胀类片段时出错,java,android,android-fragments,android-fragmentactivity,android-dialogfragment,Java,Android,Android Fragments,Android Fragmentactivity,Android Dialogfragment,我正在尝试创建一个包含listview的dialogfragment,我使用了这个问题的公认答案 但是当我试图打开“片段”对话框,应用程序崩溃时,我得到了一个膨胀类片段的错误 下面是对话框\u fragment\u和\u list\u fragment布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

我正在尝试创建一个包含listview的dialogfragment,我使用了这个问题的公认答案

但是当我试图打开“片段”对话框,应用程序崩溃时,我得到了一个膨胀类片段的
错误

下面是
对话框\u fragment\u和\u list\u fragment
布局

<?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
         android:id="@+id/flContent"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:padding = "10dp"
         class="com.OptimusApps.stayhealthy.AndroidXMLParsingActivity" />

</LinearLayout>
这就是我如何称呼dialogfragment的

public void onClick(View v) {
                BodyDialogue  dialogFragment = BodyDialogue.newInstance(1);
                 dialogFragment .setRetainInstance(true);
                 dialogFragment .show(getFragmentManager(), "bodydialogue");
            }
这就是日志中的原因

08-17 19:43:15.702: E/AndroidRuntime(3605): Caused by: java.lang.IllegalArgumentException: Binary XML file line #7: Duplicate id 0x7f0a0031, tag null, or parent id 0x0 with another fragment for com.OptimusApps.stayhealthy.AndroidXMLParsingActivity
08-17 19:43:15.702: E/AndroidRuntime(3605):     at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:285)
但当我试图打开时,我在膨胀类片段时遇到了一个错误 片段对话框和应用程序崩溃

之所以会发生这种情况,是因为您将已经包含另一个片段的布局(通过
fragment
标记)用作
BodyDialogue
片段的视图。这将失败,因为嵌套片段不允许从xml布局中膨胀,如前所述:

注意:当版面包含时,不能将版面膨胀为片段。嵌套片段仅在动态添加到片段时才受支持

因此,如果您想在
BodyDialogue
对话框片段中嵌入
AndroidXMLParsingActivity
(片段的糟糕命名btw),那么使用
getChildFragmentManager()
在相同的
onCreateView
回调中的代码中进行嵌入

但当我试图打开时,我在膨胀类片段时遇到了一个错误 片段对话框和应用程序崩溃

之所以会发生这种情况,是因为您将已经包含另一个片段的布局(通过
fragment
标记)用作
BodyDialogue
片段的视图。这将失败,因为嵌套片段不允许从xml布局中膨胀,如前所述:

注意:当版面包含时,不能将版面膨胀为片段。嵌套片段仅在动态添加到片段时才受支持


因此,如果您想在
BodyDialogue
对话框片段中嵌入
AndroidXMLParsingActivity
(片段的糟糕命名顺便说一句),那么使用
getChildFragmentManager()
在相同的
onCreateView
回调中的代码中进行嵌入,我使用这个简单易用的方法解决了我的问题

请参考此答案

我的代码使用上面的答案

@Override
public void onClick(View v) {

// TODO Auto-generated method
                                        // stub

FragmentTransaction ft2 = getFragmentManager().beginTransaction();
                                        ft2.remove(getFragmentManager().findFragmentByTag("one"));
                                        ft2.commit();

dialog.dismiss();

}
我的xml

<fragment
            android:id="@+id/map"
            android:name="com.google.android.gms.maps.MapFragment"
            android:layout_width="match_parent"
            android:layout_height="220dip"
            android:tag="one"
            android:layout_below="@+id/txtTargetStreet_hint"
            android:layout_margin="20dip" />

我用这个简单易行的方法解决了我的问题

请参考此答案

我的代码使用上面的答案

@Override
public void onClick(View v) {

// TODO Auto-generated method
                                        // stub

FragmentTransaction ft2 = getFragmentManager().beginTransaction();
                                        ft2.remove(getFragmentManager().findFragmentByTag("one"));
                                        ft2.commit();

dialog.dismiss();

}
我的xml

<fragment
            android:id="@+id/map"
            android:name="com.google.android.gms.maps.MapFragment"
            android:layout_width="match_parent"
            android:layout_height="220dip"
            android:tag="one"
            android:layout_below="@+id/txtTargetStreet_hint"
            android:layout_margin="20dip" />


是的,因为如果我调用它来替换一个片段,它看起来很好。就像我说的,这与片段无关,我已经在其他片段上测试过了,它们也不起作用,我添加了我的日志,我想你可能会找到解决问题的方法。请不要在你的问题标题前加上安卓或任何其他标签,底部的标签已经足够了。是的,因为如果我只是调用它来替换一个片段,它看起来很好。就像我说的,这与片段无关,我已经在其他片段上测试过了,它们也不起作用,我添加了我的日志,我想你可能会找到解决问题的方法。请不要在你的问题标题前加上安卓或任何其他标签,底部的标签已经足够了。你有这样的例子吗?@CamConnor如果你还没有自己制作,请看一看。+1“嵌套片段指南已经提到”。。。似乎你是唯一一个读过它的人:)在我读到这篇文章之前,你整夜都在和xmls+nestedfrags争吵。你有这样的例子吗?@CamConnor如果你还没有自己做出来,请看一看。+1“嵌套片段指南已经提到”。。。似乎你是唯一读过它的人:)在我读到这篇文章之前,你整夜都在和xmls+nestedfrags争吵。