質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

1回答

7853閲覧

android studio intentので値を渡したところでエラーになる

hanamero50

総合スコア18

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2018/12/13 01:38

前提・実現したいこと

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/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

java

1 Intent intent = getIntent(); 2 Integer seikaisu = intent.getIntExtra("seikaisu",0); 3 Integer mondaisu = intent.getIntExtra("mondaisu",0);

このコードがメソッドに属していないことが原因です。
メソッドに属していないため、このActivityがインスタンス化されるときに初期化されることになりますが、
その過程でgetIntent()した場合、その結果はnullになります。
これらをonCreate()に入れましょう。

投稿2018/12/13 01:43

swordone

総合スコア20649

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hanamero50

2018/12/13 01:59

ありがとうございます。無事にエラーは消えたのですが、今度は Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference at com.example.quiz.quizgame.result.onCreate(result.java:24) 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); } のところでエラーを吐いてしまいます。一応onCreate内には入れているのですが、表示の仕方が違うのでしょうか
swordone

2018/12/13 02:06

kekkaメソッドはどこから呼んでいますか?
hanamero50

2018/12/13 02:16

初めて使いました。
swordone

2018/12/13 02:25

intent = new Intent(MainGame.this, result.class); intent.getIntExtra("seikaisu", 0); intent.getIntExtra("mondaisu", 0); startActivity(intent); putするべきところでgetしているため、nullのまま画面遷移している
hanamero50

2018/12/13 02:41

本当だ・・・初歩的なところで申し訳ないです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問