NullPointerException: 초기화되지 않은 창에서 콜백 검색을 시도하는 중
SplashActivity에서 LoginActivity로 이동할 때 앱에 오류가 발생합니다.
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
이 오류는 LoginActivity가 에서 뷰 구성 요소가 제대로 초기화되기 전에 뷰 구성 요소에 액세스하려고 합니다.
원인
오류의 구체적인 원인은 LoginActivity.java 코드에 있습니다. onCreate()에서 setContentView()가 호출되기 전에 멤버가 초기화됩니다. 이로 인해 클래스 멤버가 뷰를 찾으려고 할 때 뷰가 아직 존재하지 않는 상황이 발생합니다.
해결책
문제를 해결하려면 뷰 멤버를 초기화 없이 클래스:
private EditText usernameField, passwordField; private TextView error; private ProgressBar progress;
그런 다음 setContentView()가 완료된 후 onCreate() 내에서 멤버를 초기화합니다. 호출됨:
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);
위 내용은 내 LoginActivity에서 뷰에 액세스할 때 NullPointerException이 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!