繁体   English   中英

Android Fragments NullPointerException错误

[英]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方法内的基本onItemClickListenerandroid.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM