Android:尝试使用基于所选的另一个微调器项目的项目创建微调器

时间:2013-05-28 22:56:22

标签: java android

我有一个带有mg,g,微克,kg的物品的旋转器。如果我选择mg,我希望第二个微调器只更新mg和g项目。但是当使用if逻辑时我得到的类型为ArrayAdapter的方法createFromResource(Context,int,int)不适用于争论“错误。

public class MyOnItemSelectedListener实现OnItemSelectedListener {

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id){
    String str = parent.getItemAtPosition(pos).toString();

    final TextView result = (TextView) findViewById(R.id.textView5);

    if (str.equals("mg")){
        Spinner spinner1 = (Spinner) findViewById(R.id.spinner2);

        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.units, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner1.setAdapter(adapter);
        //result.setText("testing");
    }
    else {
        result.setText("micrograms");
    }

    }

    @Override
    public void onNothingSelected(AdapterView parent){}
}

1 个答案:

答案 0 :(得分:1)

你的问题就在这一行:

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.units, android.R.layout.simple_spinner_item);

这里的第一个参数采用Context。因为你是从一个监听器(它是自己的类)调用它,this指的是监听器,而不是你的活动。您需要通过侦听器类的构造函数传递对活动的引用,并将this替换为对该活动上下文的引用。