经过一些研究后我终于想出了如何让我的dialogfragment
将结果发送到我的活动中,现在我想将这些结果传递给真正调用该对话框片段的片段(它是一个约会对象)选择器所以我想更新日期。)
我在这里看到了这个:Call fragment events from activity
上面给了我一些想法,但由于某种原因,我的片段布局是用XML定义的,没有id,所以我不能使用这个调用:
findFragmentById(R.id.fragmentBId);
所以我要么在xml中定义我的布局(那是我的片段)错误,要么还有另一种方法可以解决这个问题。
我的xml布局中包含了我的整个布局(所有按钮textviews linearlayouts等)。虽然我从来没有说过<fragment .... />
。但我进一步调查并在此页面上看到:
http://developer.android.com/guide/topics/fundamentals/fragments.html
这就是人们应该定义片段的方式。所以为了完整性,我的xml文件现在在我定义片段的行上给出了Error: inflating class fragment
错误。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment android:name="com.viciousbytes.studiotab.subactivities.SessionEdit"
android:id="@+id/session_fragment"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent">
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:textSize="20sp"
android:text = "Client Name:"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"/>
<TextView
android:id="@+id/client_name"
android:gravity="center"
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
etc...
etc...
</fragment>
</LinearLayout>
那我错过了什么?或者id / i引用应该指向另一个包含所有这个UI的xml?关于它是如何让我设置的,我有点困惑。它没有碎片标签,但后来我没办法打电话:
SessionEdit session = (SessionEdit)getSupportFragmentManager().findFragmentById(R.id.session_fragment);
我只想让我的对话日期选择器将信息发送到调用它的片段
我看过对话日期选择器演示但是我不得不改变它以使用DialogFragment
而我必须错过“jist”。
答案 0 :(得分:1)
&LT;片断&gt;不是一个容器,它不能有任何孩子。您应该做的是让您的Fragment类将其内容视图设置为您在此处所拥有的&lt; fragment&gt;的子项。标签。你在这里的内容&lt; fragment&gt;应该存在于自己的XML文件中。