[英]Change TextView inside Fragment gives me NullPointerException
[英]“this” gives me an error in fragment
為什么this
給我一個錯誤在下面的片段?
這是我的代碼:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_item, spinnerArray);
嘗試這個:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
getActivity(), android.R.layout.simple_spinner_item, spinnerArray);
getContext()
僅在API 23上添加,並且僅適用於少數設備(因為Android M仍然沒有很大的市場份額)。
getActivity()
是在API 11上添加的,並且不建議過時。.因此,您可以使用它。
用this.getContext()
替換this
,或者甚至只是把getContext()
替換this.getContext()
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(),
android.R.layout.simple_spinner_item, spinnerArray);
原因是ArrayAdapter
對象的構造函數看起來像這樣,
從https://developer.android.com/reference/android/widget/ArrayAdapter.html中 ,
ArrayAdapter(Context context, int resource, T[] objects)
要么
ArrayAdapter(Context context, int resource, List<T> objects)
之前可能發生的事情是,代碼行所在的類很可能不是Context
類型; 因此,在構造ArrayAdapter時不能單獨使用this
作為參數。 如果getContext()
不起作用,那么建議您也嘗試嘗試getActivity()
或getApplicationContext()
。
使用getActivity()
返回與片段關聯的活動的上下文。
所以你的代碼變成
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, spinnerArray);`]
您可以嘗試getActivity().getApplicationContext()
而不是僅僅使用this
在片段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.