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

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

ただいまの
回答率

88.58%

android studio データベースの処理について

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 377

hanamero50

score 18

 前提・実現したいこと

android studioでクイズゲームを作っています。
データベースに登録した問題を問題画面にてランダムに表示させ、回答ボタンを押した後解説画面に遷移するところまではできたのですが、その後の処理で行き詰っています。

具体的に言うと、解説画面で前に表示していた問題に対応した、データベースに登録した解説を表示させたいのですが、どのように記述すればいいかわからないので教えていただきたいです。
よろしくお願いします。

 該当のソースコード

**MainGame,java 問題表示画面**
public class MainGame extends Activity {

    String QuestionNo;
    String Seikai;


    @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 FROM MyTable  ORDER BY RANDOM()";

        // SQL文を実行してカーソルを取得
        Cursor c = db.rawQuery(sql, null);
        c.moveToFirst();

        // データベースから取ってきたデータを変数にセット
        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;
            switch (v.getId()) {
                case R.id.button1:
                    intent = new Intent(MainGame.this, kaitou.class);
                    // 遷移開始
                    startActivity(intent);
                    break;

                case R.id.button2:
                    intent = new Intent(MainGame.this, kaitou.class);
                    // 遷移開始
                    startActivity(intent);
                    break;

                case R.id.button3:
                    intent = new Intent(MainGame.this, kaitou.class);
                    // 遷移開始
                    startActivity(intent);
                    break;

                case R.id.button4:
                    intent = new Intent(MainGame.this, kaitou.class);
                    // 遷移開始
                    startActivity(intent);
                    break;
            }
        }
**データベース**
public class DatabaseHelper extends SQLiteOpenHelper {

    public DatabaseHelper(Context context) {

        /*
            ここで任意のデータベースファイル名と、バージョンを指定する
            データベースファイル名 = MyTable.db
            バージョン = 1
         */
        super(context, "MyTable.db", null, 1);
    }



    @Override
    public void onCreate(SQLiteDatabase db) {
        // テーブルの作成
        db.execSQL("CREATE TABLE MyTable " +
                "(" +
                "_id INTEGER PRIMARY KEY AUTOINCREMENT" +
                ", Pref TEXT" +
                ", City0 TEXT" +
                ", City1 TEXT" +
                ", City2 TEXT" +
                ", City3 TEXT" +
                ", City4 TEXT" +
                ",kaisetu TEXT" +
                ", Clear INTEGER" +
                ")");

        // 初期データ投入


        db.execSQL("INSERT INTO MyTable(Pref,City0, City1, City2, City3, City4, kaisetu, Clear) values ('問題文','正解','問1','正解','問3','問4','これは解説です',1);");
}

  @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

``` 解説画面

public class kaitou extends Activity {

    @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         //タイトルバーを非表示にする(必ずsetContentViewの前にすること)         requestWindowFeature(Window.FEATURE_NO_TITLE);         // レイアウトをセットする         setContentView(R.layout.activity_kaitou);     }

    // ボタンがタッチされた時の処理     public void onClick(View v) {

        Intent intent;         switch (v.getId()) {             case R.id.button_tugi:                 intent = new Intent(kaitou.this, MainActivity.class);                 // 遷移開始                 startActivity(intent);                 break;         }     } }```

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

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

  • ただいまの回答率 88.58%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る