前提・実現したいこと
intentで数値を受け取る記述をしたところ、画面遷移する前に落ちてしまいます。調べてみたのですがわからなかったので教えていただきたいです。
発生している問題・エラーメッセージ
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.content.Intent.getIntExtra(java.lang.String, int)' on a null object reference at com.example.quiz.quizgame.result.<init>(result.java:18) 該当コード→**Integer seikaisu = intent.getIntExtra("seikaisu",0);** at java.lang.Class.newInstance(Native Method)
該当のソースコード
result.java public class result extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_result); } Intent intent = getIntent(); Integer seikaisu = intent.getIntExtra("seikaisu",0); Integer mondaisu = intent.getIntExtra("mondaisu",0); private void kekka() { TextView textView5 = (TextView)findViewById(R.id.textView); String str3 = String.valueOf(seikaisu); textView5.setText(str3); TextView textView6 = (TextView)findViewById(R.id.textView); String str4 = String.valueOf(mondaisu); textView5.setText(str4); } public void returnTop(View view) { Intent intent = new Intent(getApplicationContext(), MainActivity.class); startActivity(intent); } public void onClick(View v) { finish(); } }
public class MainGame extends Activity { String Seikai; String mKaisetu; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //タイトルバーを非表示にする(必ずsetContentViewの前にすること) requestWindowFeature(Window.FEATURE_NO_TITLE); // レイアウトをセットする setContentView(R.layout.activity_main_game); } @Override protected void onResume() { super.onResume(); // 問題文セット処理呼び出し setQuestion(); } // 問題文セット処理 private void setQuestion() { // 作成したDatabaseHelperクラスに読み取り専用でアクセス DatabaseHelper dbHelper = new DatabaseHelper(this); SQLiteDatabase db = dbHelper.getReadableDatabase(); /* SELECT文 テーブル名 MyTableから _idとQuestionNoがマッチする項目を取得する条件式 */ String sql = "SELECT Pref, City0, City1, City2, City3, City4,kaisetu FROM MyTable ORDER BY RANDOM()"; // SQL文を実行してカーソルを取得 Cursor c = db.rawQuery(sql, null); c.moveToFirst(); mKaisetu = c.getString(c.getColumnIndex("kaisetu")); // データベースから取ってきたデータを変数にセット String Kenmei = c.getString(c.getColumnIndex("Pref")); String Choice1 = c.getString(c.getColumnIndex("City1")); // 四択の選択肢1 String Choice2 = c.getString(c.getColumnIndex("City2")); // 四択の選択肢2 String Choice3 = c.getString(c.getColumnIndex("City3")); // 四択の選択肢3 String Choice4 = c.getString(c.getColumnIndex("City4")); // 四択の選択肢4 Seikai = c.getString(c.getColumnIndex("City0")); // 答え // データベースのクローズ処理 c.close(); db.close(); ((TextView) findViewById(R.id.textQuestion)).setText(Kenmei); ((Button) findViewById(R.id.button1)).setText(Choice1); // 四択の選択肢1をボタンに表示 ((Button) findViewById(R.id.button2)).setText(Choice2); // 四択の選択肢2をボタンに表示 ((Button) findViewById(R.id.button3)).setText(Choice3); // 四択の選択肢3をボタンに表示 ((Button) findViewById(R.id.button4)).setText(Choice4); // 四択の選択肢4をボタンに表示 } // 選択肢がクリックされた時の処理 public void onClick(View v) { Intent intent; if (((Button) v).getText().equals(Seikai)) { //正解のボタンが押されたとき int seikaisu = 0; int mondaisu = 0; seikaisu++; mondaisu++; intent = new Intent(MainGame.this, result.class); intent.getIntExtra("seikaisu", 0); intent.getIntExtra("mondaisu", 0); startActivity(intent); } switch (v.getId()) { case R.id.button1: intent = new Intent(MainGame.this, kaitou.class); intent.putExtra("kaisetu", mKaisetu); intent.putExtra("City0",Seikai); startActivity(intent); // 遷移開始 startActivity(intent); break; case R.id.button2: intent = new Intent(MainGame.this, kaitou.class); intent.putExtra("kaisetu", mKaisetu); intent.putExtra("City0",Seikai); // 遷移開始 startActivity(intent); break; case R.id.button3: intent = new Intent(MainGame.this, kaitou.class); intent.putExtra("kaisetu", mKaisetu); intent.putExtra("City0",Seikai); // 遷移開始 startActivity(intent); break; case R.id.button4: intent = new Intent(MainGame.this, kaitou.class); intent.putExtra("kaisetu", mKaisetu); intent.putExtra("City0",Seikai); // 遷移開始 startActivity(intent); break; } } else { // 不正解の処理 mSoundPool.play(mSoundId[1], 1.0f, 1.0f, 0, 0, 1.0f); // 不正解音を再生 } } @Override protected void onPause() { super.onPause(); // SoundPool 解放 mSoundPool.unload(mSoundId[0]); mSoundPool.unload(mSoundId[1]); mSoundPool.release(); } }
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/13 01:59
2018/12/13 02:06
2018/12/13 02:16
2018/12/13 02:25
2018/12/13 02:41