SettingActivity는 최대값,최소값을 적는 액티비티이고, MainActivity는 SettingActivity로부터 최소값과 최대값을
받아와 그 사이의 숫자중 랜덤한 숫자 하나를 뽑는 액티비티입니다.
<SettingActivity>의 MainActivity로 넘어가는 버튼button_pick2를 눌렀을 때 코드
button_pick2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int number_max = Integer.parseInt(textView_number_max.getText().toString());
int number_min = Integer.parseInt(textView_number_min.getText().toString());
//number_max는 textView_number_max라는 텍스트뷰에 적은 최대값, number_min는 textView_number_min라는 텍스트뷰에 적은 최소값
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.putExtra("number_max", number_max);
intent.putExtra("number_min", number_min);
intent.putExtra("number_before",1);
//number_before은 그전에 최소값,최대값을 지정한 적이 있는지 MainActivity에서 확인을 하기 위한 if를 사용할 때 쓰는 임의의 값
startActivity(intent);
finish();
}
});
<MainActivity>의 숫자뽑기 버튼button_pick를 눌렀을 때 코드
button_pick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = getIntent();
if(intent != null){
number_before = getIntent().getExtras().getInt("number_before");
}
//SettingActivity에서 최대값,최소값을 지정했는지 유무를 파악하기 위한 임의의 값 number_before를 가져옴
Random random = new Random();
if(number_before == 1) {
int number_max = getIntent().getExtras().getInt("number_max");
int number_min = getIntent().getExtras().getInt("number_min");
int randomNum = random.nextInt(number_max-number_min+1)+number_min;
textView_number.setText(String.valueOf(randomNum));
//number_before가 1이면 최소값,최대값을 SettingActivity에서 지정한 것이기 때문에 내가 설정한 최대,최소값으로 랜덤한 숫자를 textView_number에 출력함
}else{
int number_max = 100;
int number_min = 0;
int randomNum = random.nextInt(100-0+1)+0;
textView_number.setText(String.valueOf(randomNum));
}
//그외 상황일때 SettingActivity에서 최대,최소값을 지정한 것이 아니기 때문에 그냥 기본적으로 최대값100, 최소값0으로 설정되도록 한다.
}
});
button_setting.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(), SettingActivity.class);
startActivity(intent);
finish();
}
});
//button_setting 버튼은 SettingActivity로 넘어가는 버튼
이렇게 코드가 짜여진 상황에서 MainActivity에서 SettingActivity로 넘어가 최대, 최소값을 설정하지 않고
바로 button_pick 버튼을 누르게 되면 SettingActivity에서 넘겨받은 intent가 없는데도 불구하고
int number_before = getIntent().getExtras().getInt("number_before")가
'int android.os.Bundle.getInt(java.lang.String)' on a null object reference이렇게 오류가 남게 됩니다.
if문으로 전달받은 intent가 없으면 그냥 넘기고 오류가 안나야하는거 아닌가요?
어떻게 수정해야할지 알려주세요...