[英]Android Fragments NullPointerException error
我尝试使用下面的代码打开一个Fragment
是另一个片段中,但给了我一个空指针异常,没有原因。
Fragment newFragment = new SecondFragment();
// consider using Java coding conventions (upper char class names!!!)
FragmentTransaction transaction = getFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.menuitem_detail_container, newFragment);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
这段代码位于onItemClickListener
内的onCreateView
方法内的基本onItemClickListener
( android.support.v4.app.Fragment
)
关于我可能做错的任何想法?
在getFragmentManager上,您应该使用getActivity().getSupportFragmentManager()
或getChildFragmentManager()
而不是getFragmentManager。 如果在transaction.replace()处抛出NPE,则应确保替换propper布局,例如使用
RelativeLayout rl = (RelativeLayout) getActivity().findViewById(R.id.menuitem_detail_container);
transaction.replace(rl.getId(), newFragment);
上面只是一个例子,因为我不知道你的代码,但你可能会得到这个想法。 在此示例中,我假设您使用的容器布局在活动XML中具有相同的名称。
只是确保你不要尝试替换返回null的东西。 如果您正在使用onCreate中的容器,请尝试记录它以查明它是否为null。
如果这对您没有帮助,请发布您的Logcat输出。
使用嵌套片段时,需要使用getChildFragmentManager()作为内部片段。
还要确保从FragmentManager和ChildFragmentManager的支持库导入。
找我的transaction.replace:
transaction.replace(R.id.provas_view,new ListaProvasFragment(),ListaProvasFragment.class.getCanonicalName());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.