为什么this
在下面的片段中给我一个错误?
这是我的代码:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_item, spinnerArray);
答案 0 :(得分:1)
试试这个:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
getActivity(), android.R.layout.simple_spinner_item, spinnerArray);
getContext()
仅在API 23上添加,并且仅适用于少数设备(因为Android M仍然没有巨大的市场份额)。
getActivity()
,并且不会弃用它。所以,您可以使用它。
答案 1 :(得分:0)
将this
替换为this.getContext()
,或者只是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
类型的类;因此,您不能单独使用this
作为构造ArrayAdapter的参数。如果getContext()
不起作用,那么我建议您同时尝试getActivity()
或getApplicationContext()
。
答案 2 :(得分:0)
使用getActivity()
返回与片段关联的活动的上下文。
所以你的代码变成了
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, spinnerArray);`]
答案 3 :(得分:-2)
您可以尝试getActivity().getApplicationContext()
而不是仅使用片段中的this
。