"这"给我一个片段错误

时间:2016-07-23 19:48:13

标签: java android

为什么this在下面的片段中给我一个错误?

这是我的代码:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                this, android.R.layout.simple_spinner_item, spinnerArray);

4 个答案:

答案 0 :(得分:1)

试试这个:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(
            getActivity(), android.R.layout.simple_spinner_item, spinnerArray);
  • getContext()仅在API 23上添加,并且仅适用于少数设备(因为Android M仍然没有巨大的市场份额)。

  • 在API 11上添加了
  • 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