好的,所以我正在开发一个Android应用程序。在我的一个应用程序的活动(称为转换)中,已经有3个空白的微调器(我们现在将忽略第三个)。一个主要的微调器允许用户决定诸如温度,压力或体积之类的主题。
public class Convert extends Activity{
String category = MySingleton.getInstance().getCategory();
protected DataStorage appState;
public void onCreate(Bundle icicle){
super.onCreate(icicle);
setContentView(R.layout.convert);
appState = (DataStorage)getApplication();
// Category Info
Spinner convertTopic = (Spinner) findViewById(R.id.convertTopic);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.convertTopic_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
convertTopic.setAdapter(adapter);
category = MySingleton.getInstance().getCategory();
// Subcategory Info
Spinner inputUnit = (Spinner) findViewById(R.id.inputUnit);
ArrayAdapter<CharSequence> adapter2;
adapter2 = ArrayAdapter.createFromResource(this, R.array.blank_array, android.R.layout.simple_spinner_item);
if(category.equals("Temperature"))
adapter2 = ArrayAdapter.createFromResource(this, R.array.convertUnitTemperature_array, android.R.layout.simple_spinner_item);
else if(category.equals("Pressure"))
adapter2 = ArrayAdapter.createFromResource(this, R.array.convertUnitPressure_array, android.R.layout.simple_spinner_item);
else if(category.equals("Volume"))
adapter2 = ArrayAdapter.createFromResource(this, R.array.convertUnitVolume_array, android.R.layout.simple_spinner_item);
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
inputUnit.setAdapter(adapter2);
convertTopic.setOnItemSelectedListener(new OnTopicSelectedListener());
}
}
我还有一个单独的类来处理我的第一个微调器选择。
public class OnTopicSelectedListener implements OnItemSelectedListener{
String category = MySingleton.getInstance().getCategory();
protected DataStorage appState;
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id){
if(parent.getItemAtPosition(pos).toString().length() != 0){
Toast.makeText(parent.getContext(), "Working with " +
parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
}
category = parent.getItemAtPosition(pos).toString();
MySingleton.getInstance().setCategory(category);
}
@SuppressWarnings("rawtypes")
public void onNothingSelected(AdapterView parent){
// Do nothing.
}
}
我的问题很简单,但我还没有找到解决方法。 每当该活动开始时,一切都是预期的空白。但是,每当有人从主微调器 convertTopic 中选择一个选项时,第二个微调器就不会更新。
我可以让第二个微调器更新的唯一方法是返回上一个活动并返回到Convert活动。主旋转器将再次显示为空白,但第二个微调器将更新。
我想让它成为第二个微调器,一旦用户从主微调器中选择了某个东西,就会更新选择。我有什么方法可以用吗?是否涉及任何循环?
如果我的问题不明确,我道歉。这是我第一次在这个网站上提问。
答案 0 :(得分:0)
不要将OnItemSelectedListener
作为单独的类,而是将其设为Convert
的内部类。然后使您的微调器变量成为Convert
的成员,而不仅仅是onCreate
中的局部变量。现在,您的内部类将可以直接访问第二个微调器,从而允许您在onItemSelected
方法中对其进行操作。
对于内部类的非android解释,您可以参考Java教程here。