我在onCreate函数中创建了一个微调器。这是代码:
Spinner spinner = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.weight_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
现在我想从另一个类访问微调器。我想要做的是在完成方法时将微调器选择设置为位置0。我估计我必须使用类似的东西:
spinner.setselection(0);
但是在创建微调器的类之外执行此操作并不起作用。以下是我试图访问微调器的代码部分:
public void onClick(DialogInterface dialog, int item)
{
switch(item)
{
case 0:
{
float valueInput = Float.parseFloat(valueEntered.getText().toString());
valueEntered.setText(String.valueOf(convertKilosToGrams(valueInput)));
///This is where i want to to access the spinner///
break;
}
有人可以帮忙吗?
答案 0 :(得分:0)
一种解决方案是使用函数DoSomethingToSpinner
定义一个接口,然后在主活动中实现它
public void DoSomethingToSpinner (some_parameter)
{
spinner.setselection(some_parameter);
// do your work here
}
然后拨打interface.DoSomethingToSpinner
,它应该可以解决您的问题。
答案 1 :(得分:0)
应用@ SpeedBirdNine对问题的回答。您需要使您的类包可访问。为此,您可以添加
private MyClass instance;
到你的班级,然后用
初始化它instance = this;
onCreate()
中的。您还需要一个静态方法来访问Activity,如
static Activity getInstance() { return instance; }
这样你就可以打电话了
Activity.getInstance().DoSomethingToSpinner(parameter);
为了使其更易于访问,您可以定义静态函数
static void doSomethingToSpinner(parameter) {
getInstance().DoSomethingToSpinner(parameter);
}
可以从任何地方访问。
如果你想访问Spinner对象只是用它做“做事”(不鼓励),你可以使用
static Spinner getSpinner() { return getInstance().getSpinnerMember(); }
与
Spinner getSpinnerMember() { return spinner; }
这为调用类提供了对整个Spinner对象的访问权限,因此无法防止包对象发生意外错误。
另一个类没有处理包含Spinner的Activity。由于一次只有一个活动实例,您可以在onCreate
中保存全局句柄。然后,它可以提供对其微调器对象的访问。