クイズを作れて保存ができるようにしたいのですが、NullPointerExceptionが出てしまいます。
PreferencesManagerの27行目はspEditor.putString(key.getValue(),s);
MakeQuizActivityの31行目はpm.saveString(strTitle, PreferenceManager.DataKeys.TITLE);
です。
なぜヌルポが出ているのか、解決法をわかりやすく教えていただきたいです。
Error
1java.lang.NullPointerException: Attempt to invoke interface method 'android.content.SharedPreferences$Editor android.content.SharedPreferences$Editor.putString(java.lang.String, java.lang.String)' on a null object reference 2 at com.test.quizmaker.PreferenceManager.saveString(PreferenceManager.java:27) 3 at com.test.quizmaker.MakeQuizActivity$1.onClick(MakeQuizActivity.java:31) 4 at android.view.View.performClick(View.java:5610) 5 at android.view.View$PerformClick.run(View.java:22265) 6 at android.os.Handler.handleCallback(Handler.java:751) 7 at android.os.Handler.dispatchMessage(Handler.java:95) 8 at android.os.Looper.loop(Looper.java:154) 9 at android.app.ActivityThread.main(ActivityThread.java:6077) 10 at java.lang.reflect.Method.invoke(Native Method) 11 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) 12 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
MakeQuizActivity
1public class MakeQuizActivity extends AppCompatActivity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_make_quiz); 7 8 Button button2 = (Button)findViewById(R.id.makeQuiz_Button2); 9 button2.setOnClickListener(new View.OnClickListener() { 10 @Override 11 public void onClick(View v) { 12 Intent intent2 = new Intent(MakeQuizActivity.this,com.test.quizmaker.MainActivity.class); 13 PreferenceManager pm = new PreferenceManager(); 14 SP(pm.sp, pm.spEditor); 15 String strTitle = ((EditText)findViewById(R.id.editText)).getText().toString(); 16 String strQuiz = ((EditText)findViewById(R.id.editText2)).getText().toString(); 17 String strAnswer = ((EditText)findViewById(R.id.editText3)).getText().toString(); 18 pm.saveString(strTitle, PreferenceManager.DataKeys.TITLE); 19 startActivity(intent2); 20 } 21 }); 22 } 23 public void SP(SharedPreferences pmsp, SharedPreferences.Editor pmse){ 24 pmsp = getSharedPreferences("DataStore", MODE_PRIVATE); 25 pmse = pmsp.edit(); 26 } 27}
PreferencesManager
1public class PreferenceManager{ 2 3 public SharedPreferences sp; 4 public SharedPreferences.Editor spEditor; 5 6 public enum DataKeys { 7 TITLE("title"), QUIZ("quiz"), ANSWER("answer"); 8 9 private String value; 10 11 private DataKeys(String value) { 12 this.value = value; 13 } 14 public String getValue() { 15 return this.value; 16 } 17 } 18 19 public void saveString(String s, DataKeys key){ 20 spEditor.putString(key.getValue(),s); 21 spEditor.apply(); 22 } 23} 24
回答2件
あなたの回答
tips
プレビュー