안녕하세요.. 초보 개발자입니다.. 회원가입 구현을 만들고있는데
계속 xxx has stopped 오류가 발생하네요..
logcat에 빨간색? 은 없고..
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.content.SharedPreferences.getBoolean(java.lang.String, boolean)' on a null object reference at com.example.user.testsest.MainActivity.onCreate(MainActivity.java:30)
이부분 때문에 오류가 발생하는것 같은데..
public class MainActivity extends AppCompatActivity {
EditText idInput, passwordInput;
CheckBox autoLogin;
Boolean loginChecked;
SharedPreferences pref;
SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
idInput = (EditText) findViewById(R.id.emailInput);
passwordInput = (EditText) findViewById(R.id.passwordInput);
autoLogin = (CheckBox) findViewById(R.id.checkBox);
// if autoLogin checked, get input
if (pref.getBoolean("autoLogin", false)) {
idInput.setText(pref.getString("id", ""));
passwordInput.setText(pref.getString("pw", ""));
autoLogin.setChecked(true);
// goto mainActivity
} else {
// if autoLogin unChecked
String id = idInput.getText().toString();
String password = passwordInput.getText().toString();
Boolean validation = loginValidation(id, password);
if (validation) {
Toast.makeText(MainActivity.this, "Login Success", Toast.LENGTH_LONG).show();
// save id, password to Database
if (loginChecked) {
// if autoLogin Checked, save values
editor.putString("id", id);
editor.putString("pw", password);
editor.putBoolean("autoLogin", true);
editor.commit();
}
// goto mainActivity
} else {
Toast.makeText(MainActivity.this, "Login Failed", Toast.LENGTH_LONG).show();
// goto LoginActivity
}
}
// set checkBoxListener
autoLogin.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
loginChecked = true;
} else {
// if unChecked, removeAll
loginChecked = false;
editor.clear();
editor.commit();
}
}
});
}
private boolean loginValidation(String id, String password) {
if (pref.getString("id", "").equals(id) && pref.getString("pw", "").equals(password)) {
// login success
return true;
} else if (pref.getString("id", "").equals(null)) {
// sign in first
Toast.makeText(MainActivity.this, "Please Sign in first", Toast.LENGTH_LONG).show();
return false;
} else {
// login failed
return false;
}
}
}
if (pref.getBoolean("autoLogin", false)) {
이부분이 30번째 라인인데... 대체 무엇이 문제인지 모르겠네요..