스피너의 onItemSelected 이벤트를 처리하는 리스너 클래스에서 TextView by ID를 얻으려고합니다. 내 주요 활동에서 findViewById (R.id.textView1)를 호출 할 수 있으며 정상적으로 작동합니다. 그러나 내 스피너 리스너 클래스에서 동일한 함수를 호출하면 항상 null을 반환하고 앱을 강제 종료합니다.안드로이드 findViewById는 메인 액티비티 이외의 클래스에서 사용될 때 null을 반환합니다.
누구나 findViewById가 내 기본 활동에서 작동하지만 리스너 클래스에서 작동하지 않는 이유를 알고 계십니까?
다음은 내 주요 활동 코드입니다. 텍스트 뷰 TV = view.findViewById (R.id "나는 얻기 위해 어떻게해야합니까 무엇
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.
}
}
:
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 코드입니다 : 그것은 단추를 클릭 할 때 호출되는 .myTextView); " 일하다?
감사합니다 !!! 당신은 콘텐츠보기를 설정하는 경우 이전
내 주요 활동에서 이미 setContentView (R.layout.somename)를 호출했습니다. 그런 다음 레이아웃에서 회 전자를 표시하고 목록에서 항목을 선택하면 findViewById를 사용하여 TextView를 업데이트해야합니다. – Bumper
죄송합니다. 제 앞에 코드가 없기 때문에 "somename"을 넣었지만 회 전자가있는 레이아웃으로 내용보기를 설정합니다. – Bumper
진단을 제공 할 수 있도록 전체 코드를 붙여 넣으십시오. – Cristian