>Java >java지도 시간 >Android에서 'Null 개체 참조에서 가상 메서드 'android.view.Window$Callback android.view.Window.getCallback()' 호출 시도'가 표시되는 이유는 무엇입니까?

Android에서 'Null 개체 참조에서 가상 메서드 'android.view.Window$Callback android.view.Window.getCallback()' 호출 시도'가 표시되는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-09 14:10:151041검색

Why Do I Get

Android의 "Null 객체 참조에서 가상 메서드 'android.view.Window$Callback android.view.Window.getCallback()' 호출 시도"

이 오류는 활동이 완전히 초기화되기 전에 보기에 액세스하려고 시도할 때 발생합니다. 특히 null 개체에서 Window.getCallback() 메서드를 호출하면 오류가 발생하며, 이는 onCreate()에서 setContentView() 메서드가 아직 호출되지 않은 경우 발생할 수 있습니다.

원인 :
이 오류를 방지하려면 클래스에서 초기화하지 않고 뷰 필드를 선언하는 것이 중요합니다. 선언:

private EditText usernameField, passwordField;
private TextView error;
private ProgressBar progress;

그런 다음 setContentView()가 호출된 후 onCreate() 내에서 다음 필드에 값을 할당하세요.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    usernameField = (EditText)findViewById(R.id.username);
    passwordField = (EditText)findViewById(R.id.password);
    error = (TextView)findViewById(R.id.error);
    progress = (ProgressBar)findViewById(R.id.progress);
}

추가 조언:

  • UI 스레드에서 코드를 실행하려면 핸들러를 사용하는 것이 좋습니다. 타이머는 백그라운드 스레드에서 작업을 실행하는 타이머입니다.
new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
        Intent intent = new Intent(SplashActivity.this, LoginActivity.class);
        startActivity(intent);
        finish();
    }
}, 1500);

위 내용은 Android에서 'Null 개체 참조에서 가상 메서드 'android.view.Window$Callback android.view.Window.getCallback()' 호출 시도'가 표시되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.