我有一个带有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){}
}
答案 0 :(得分:1)
你的问题就在这一行:
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.units, android.R.layout.simple_spinner_item);
这里的第一个参数采用Context。因为你是从一个监听器(它是自己的类)调用它,this
指的是监听器,而不是你的活动。您需要通过侦听器类的构造函数传递对活动的引用,并将this
替换为对该活动上下文的引用。