从视图中获取片段实例

时间:2014-09-29 09:23:10

标签: android-fragments view

在我的活动中,我正在从包含Button和片段的xml文件中扩展布局。 activityView是我的View对象。

     LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    Intent intent = getIntent();
    View activityView = layoutInflater.inflate(R.layout.my_profile, null,false);

我得到按钮这个:         docButton =(Button)activityView.findViewById(R.id.doc_prof_name);

如果我得到片段,我的appforce会关闭:          FragmentManager fm = getFragmentManager();           final Fragment f1 = fm.findFragmentById(R.id.fragment1);

我没有得到如何获取activityView即my_profile.xml

中的片段实例
        <Button
    android:id="@+id/btn1"  
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="2"
    android:text="abc" />

<fragment android:name="com.example.myapp.MainActivity$FirstFragment"
            android:id="@+id/fragment1" android:layout_weight="1"
            android:layout_width="0px" android:layout_height="wrap_content"
             />

这是我的logcat错误

09-29 15:08:18.319: E/AndroidRuntime(12901):    ... 11 more
09-29 15:08:18.319: E/AndroidRuntime(12901): Caused by: java.lang.NullPointerException
09-29 15:08:18.319: E/AndroidRuntime(12901):    at com.example.tdoapp.DocProfile$SecondFragment.onCreateView(DocProfile.java:130)
09-29 15:08:18.319: E/AndroidRuntime(12901):    at android.app.Fragment.performCreateView(Fragment.java:1700)
09-29 15:08:18.319: E/AndroidRuntime(12901):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:866)
09-29 15:08:18.319: E/AndroidRuntime(12901):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1040)
09-29 15:08:18.319: E/AndroidRuntime(12901):    at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1142)
09-29 15:08:18.319: E/AndroidRuntime(12901):    at android.app.Activity.onCreateView(Activity.java:4835)
09-29 15:08:18.319: E/AndroidRuntime(12901):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
09-29 15:08:18.319: E/AndroidRuntime(12901):    ... 19 more

1 个答案:

答案 0 :(得分:0)

这个问题有点旧,但 可能会找到知道其中一个视图的片段(甚至可以从片段中调用onClick处理程序)。但它需要在片段的onCreateView()中注册根视图。

https://stackoverflow.com/a/26887675/755804

基本上,每个视图都有一个标记(可能为null)。我们将根视图的标记设置为膨胀该视图的片段。然后,很容易搜索视图父项并检索包含视图的片段(例如,单击按钮)。