您的位置:首页 > 移动开发 > Android开发

Android Fragment 嵌套使用报错

2014-10-30 17:25 113 查看
在新的SDK每次创建activity时,会自己主动生成
<pre name="code" class="java">public static class PlaceholderFragment extends Fragment



fragment模块,在该模块的基础上进行嵌套fragment代码例如以下:

<pre name="code" class="java">public static class PlaceholderFragment extends Fragment {

static FragmentManager fm;
public PlaceholderFragment() {
fm=getChildFragmentManager();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView=LayoutInflater.from(getActivity())
.inflate(R.layout.tab, null);

if(fm.findFragmentByTag("haha")==null)
{
Fragment1 f1=new Fragment1();
fm.beginTransaction().add(R.id.frame_tab,f1,"haha").commit();
}
return rootView;
}



结果报错例如以下:



总之就是说Acitivity被被销毁了。

原因:
fm=getChildFragmentManager();在 <span style="font-family: Arial, Helvetica, sans-serif;">PlaceholderFragment 的构造函数中调用,此时它还没有创建onCreate,自然获取不到Fragment及activity了,因此将其写入</span>
<span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="java"><pre name="code" class="java">public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
fm=getChildFragmentManager();
}


错误解决,大家一定要对Fragment及activity生命周期注意啊。



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: