2017-04-07 46 views
1

我目前工作的一個Android應用程序,它突然給了我這些錯誤如何使用片段的getActivity()方法傳遞上下文?

避免片段非默認的構造函數:使用默認的構造函數加上片段#setArguments(捆綁),而不是

該片段應提供一個默認的構造函數(不帶參數的公共構造)

這是代碼:

public AFragment newInstance(int sectionNumber, Context context) 
{ 
    AFragment fragment = new AFragment(context); 
    Bundle args = new Bundle(); 
    args.putLong(ARG_SECTION_NUMBER, sectionNumber); 
    fragment.setArguments(args); 
    return fragment; 
} 

public AFragment(Context context) 
{ 
    mContext = context; 
} 

如何使用片段的getActivity()方法傳遞上下文(mContext = context)?

+1

擺脫'mContext'字段,只需在'Fragment'類中的任意位置使用'getActivity()'''Context''。不要試圖在構造函數中傳遞一個。 –

+0

您不需要將上下文傳遞給片段...只需執行'file - > new project'並使用默認活動/片段創建項目並查看Google做了什麼。這很簡單,會教你「正確的方式」。 ;)不要在碎片中使用默認的空構造函數以外的構造函數。 (或者你將來會後悔的)。 –

回答

2

您絕不應該將上下文傳遞給片段。

您可以從newInstance參數

無論你使用的片段上下文場)刪除,你getActivity更換(。

如果你真的想用一個字段,你必須給它onAttach並記住它取消分配時,片段被停止或拆卸任何活動

0

片段是孩子的或活動的一部分。因此,無論何時您想要片段中的上下文,都可以使用getActivity()作爲上下文。

+0

如果他試圖在多於一項活動中重複使用該片段,則這不是一個選項。 – HaroldSer

相關問題