문제상황:
에러가 발생한 코드와 이에 대한 설명:
MainActivity.java
public class MainActivity extends AppCompatActivity {
private Button btnShow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnShow = findViewById(R.id.btnShow);
btnShow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
}
});
}
}
위 코드는 메인 액티비티에서 버튼을 누르면 두 번째 액티비티로 이동하는 간단한 안드로이드 애플리케이션입니다. 그러나 이 코드를 실행하면 다음과 같은 에러가 발생합니다.
에러로그 내용:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapplication/com.example.myapplication.SecondActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
해결방법:
에러가 수정된 코드+ 수정된 부분에 대한 주석:
SecondActivity.java
public class SecondActivity extends AppCompatActivity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
textView = findViewById(R.id.textView); // 수정된 부분
textView.setText("Hello, Second Activity!");
}
}
위 코드에서 수정된 부분은 두 번째 액티비티의 onCreate() 메서드에서 누락된 findViewById() 호출을 추가한 것입니다.
원인분석:
에러 발생 원인에 대한 자세한 설명:
이 에러는 두 번째 액티비티에서 TextView의 참조를 초기화하지 않고 setText() 메서드를 호출하려고 했기 때문에 발생했습니다. findViewById()를 사용하여 TextView의 참조를 가져오지 않았기 때문에 이 문제가 발생했습니다.
참고링크:
728x90