我试图在我的监听器类中通过 ID 获取一个 TextView,该类处理微调器的 onItemSelected 事件。在我的主要 Activity 中,我可以调用 findViewById(R.id.textView1) 并且它工作正常。但是,如果我在微调器监听器类中调用相同的函数,它总是返回 null 并强制关闭应用程序。
有人知道为什么 findViewById 在我的主 Activity 中有效,但在我的监听器类中无效吗?
这是我主要 Activity 的代码。单击按钮时调用:
public void something ()
{
setContentView(R.layout.spinnerLayout);
Spinner spinner = (Spinner) findViewById(R.id.mySpinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.spinner_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
}
这是 MyOnItemSelectedListener 的代码:
public class MyOnItemSelectedListener implements OnItemSelectedListener
{
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
{
TextView tv = view.findViewById(R.id.myTextView);
// I want to set the text of this text view to the value selected using the spinner
tv.setText("Something");
}
public void onNothingSelected(AdapterView parent) {
// Do nothing.
}
}
我需要做什么才能获得“TextView tv = view.findViewById(R.id.myTextView);”上类?
谢谢!!!
最佳答案
为了使 findViewById
起作用,您必须之前调用过 setContentView
关于Android findViewById 在主 Activity 以外的类中使用时返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5222294/