Android findViewById在主Activity以外的类中使用时返回null

Bum*_*per 2 android

我试图在我的侦听器类中通过ID获取TextView,它处理一个微调器的onItemSelected事件.在我的主Activity中,我可以调用findViewById(R.id.textView1),它工作正常.但是如果我在我的spinner监听器类中调用相同的函数,它总是返回null并强制关闭应用程序.

任何人都知道为什么findViewById在我的主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());

}
Run Code Online (Sandbox Code Playgroud)

这是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.
    }
}
Run Code Online (Sandbox Code Playgroud)

我需要做什么才能获得"TextView tv = view.findViewById(R.id.myTextView);" 上班?

谢谢!!!

Cri*_*ian 7

为了findViewById工作,你必须先前打过电话setContentView