0

我想要使用下面的代碼來打開Fragment是在另一個片段,但是給我一個空指針異常無故。Android的碎片NullPointerException錯誤

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(); 

這段代碼是一個基本的onItemClickListeneronCreateView方法中的一個片段內(android.support.v4.app.Fragment

什麼我可能是做錯了任何想法?

+0

NPE被拋出的線是什麼? – panini

回答

0

當您使用嵌套片段時,您需要getChildFragmentManager()作爲內部片段。

另外請確保您從支持庫中導入FragmentManager和ChildFragmentManager。

0

找我transaction.replace:

transaction.replace(R.id.provas_view,新ListaProvasFragment(),ListaProvasFragment.class.getCanonicalName());

2

在getFragmentManager上,您應該使用getActivity().getSupportFragmentManager()getChildFragmentManager()而不是getFragmentManager。如果NPE在transaction.replace()拋出,你應該確保你與

RelativeLayout rl = (RelativeLayout) getActivity().findViewById(R.id.menuitem_detail_container); 
transaction.replace(rl.getId(), newFragment); 

以上更換propper佈局,比如僅僅是一個例子,因爲我不知道你的代碼,但你可能會得到理念。在這個例子中,我假設你正在使用的容器佈局在Activities XML中具有相同的名稱。

只要確保你不要試圖替換返回null的東西。 如果您使用onCreate中的容器,請嘗試記錄它以查明它是否爲空。

如果這對您沒有任何幫助,請發佈您的Logcat輸出。