不能在静态上下文android spinner中使用它

时间:2013-02-03 02:23:19

标签: java android spinner

我正在尝试在微调器列表中添加几个项目。但不管怎样,我总是在this -

上得到以下异常
Cannot use this in a static context

以下是我的代码

  public static void initSpinnerView(Context context, Spinner spinnerView, String prefix, int numItems, int layout) {

    //spinnerView = (Spinner) findViewById(R.id.spinner2);
    List<String> list = new ArrayList<String>();
    list.add("list 1");
    list.add("list 2");
    list.add("list 3");
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list);
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerView.setAdapter(dataAdapter);
    }
}

谁能告诉我我在这里做错了什么?

3 个答案:

答案 0 :(得分:4)

this

这是一个表示当前对象的Java关键字。如果我没有错,这个方法放在一个扩展Activity的类中。因此,this引用Activity对象(在本例中用作Context)。由于它是静态方法,因此您无法使用关键字this或非静态变量。

要修复它,请更改为以下行:

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(context, android.R.layout.simple_spinner_item, list);

答案 1 :(得分:2)

在java中,你不能在静态方法(静态上下文)中使用它。

静态方法不指向封闭类的任何实例。

答案 2 :(得分:0)

您在静态方法中使用它,这在java中是不合法的。