从我的活动中获取数据到我的片段

时间:2011-07-18 07:14:25

标签: android android-fragments

经过一些研究后我终于想出了如何让我的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”。

1 个答案:

答案 0 :(得分:1)

&LT;片断&gt;不是一个容器,它不能有任何孩子。您应该做的是让您的Fragment类将其内容视图设置为您在此处所拥有的&lt; fragment&gt;的子项。标签。你在这里的内容&lt; fragment&gt;应该存在于自己的XML文件中。