1

我有一些問題,當我設置RecyclerViewAdapter試圖調用虛擬方法android.content.Context android.support.v4.app.FragmentActivity.getApplicationContext()「的Android

我得到錯誤

顯示java.lang.NullPointerException:嘗試在 空對象引用調用虛擬方法 'android.content.Context android.support.v4.app.FragmentActivity.getApplicationContext()'

符合mLayoutManager = new LinearLayoutManager(getActivity().getApplicationContext());

如何修復

for (ProfileFeedListModelTwo.PostBean.PollBean pollBean : pp){ 
    pollBeanArrayList.add(pollBean);} 

adapDetailTopicPoll = new AdapDetailTopicPoll(pollBeanArrayList,getContext()); 
      mLayoutManager = new LinearLayoutManager(getActivity().getApplicationContext()); 
      recyclerView.setLayoutManager(mLayoutManager); 
      recyclerView.setItemAnimator(new DefaultItemAnimator()); 
      recyclerView.setAdapter(adapDetailTopicPoll); 
+0

嘗試一些其他檢索活動的方法,例如'getParentActivity()'。根據錯誤,您的getActivity()爲空,可能不是在這種情況下調用的正確方法。 – astrade

+0

對不起我的英語不好,我不明白你在說什麼 –

回答

0

只使用僅此 mLayoutManager =新LinearLayoutManager(getActivity());如果您在活動中編寫此代碼,則使用getApplicationContext()

+0

這不是錯誤,但我得到新的錯誤'java.lang.NullPointerException:嘗試調用虛擬方法'void android.support.v7.widget.RecyclerView .setLayoutManager(android.support.v7.widget.RecyclerView $ LayoutManager)''in line'recyclerView.setLayoutManager(mLayoutManager);' –

2

getActivity()null。您可能在您的活動附加到您的片段之前調用此方法。

documentation

警告:如果您需要片段內的上下文對象,你可以調用 getActivity()。但是,請謹慎地在片段附加到活動時調用getActivity()僅 。當片段不是 尚未附接,或它的生命週期結束期間分離, getActivity()將返回null

嘗試和理解fragment lifecycle以及它是如何加上activity lifecycle

+0

請給我舉個例子嗎? –

+0

您正在嘗試向以下活動添加片段: getSupportFragmentManager()。beginTransaction()。replace(R.id.fragment_container,(your_fragment))。commit(); 當您嘗試獲取上下文時,應用程序崩潰 首先嚐試將此代碼放入片段 中的onViewCreated()方法,然後嘗試將getContext()而不是getActivity()。getApplicationContext() – Aboulfotoh

相關問題