2014-09-29 80 views
1

在我的活动中,我正在从包含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); 

我得到按钮LIK这样的: docButton =(按钮)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 
+0

的可能重复的[应用与FragmentManager崩溃使用Google地图时替换](http://stackoverflow.com/questions/22119051/app-crashes-with-fragmentmanager-replace-when-using-googlemaps) – 2014-09-29 09:31:52

+0

没有我不了解我在哪里使用View对象。 FragmentManager fm = getFragmentManager(); final Fragment f1 = fm.findFragmentById(R.id.fragment1); – Manasi 2014-09-29 09:56:01

+0

你可以发布FirstFragment类的代码吗? – 2014-09-30 02:29:39

回答

0

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

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

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