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

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

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

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Q&A

1回答

1695閲覧

ECLIPSE 4.5にANDROID STUDIO2.1をインポートして四択クイズを作成しています。

litatono

総合スコア8

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

0グッド

0クリップ

投稿2016/07/21 08:26

クイズタイトル、四択のクイズを書き込むためのレイアウトファイル作成。Databasejavaクラスを
下記のように作成しました。*34行目までは(問題','解答','A','B','C','D',')の順に直接書き込み、35行目行目以降は、(問題','○○,解答','○○,選択1','A.○○','選択2','B.○○','選択3','C.○○','選択4','D.○○',')と、約100問ほど書き込みました。

package jp.example.quiz;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class Database extends SQLiteOpenHelper{

public Database(Context context){ super(context, "MyTable.db", null, 1);

}
@Override
public void onCreate(SQLiteDatabase db){
db.execSQL("CREATE TABLE MyTable" +
"(" +
"_id INTEGER PRIMARY KEY AUTOINCREMENT" +
",Quiz TEXT" +
",Ans0 TEXT" +
",Ans1 TEXT" +
",Ans2 TEXT" +
",Ans3 TEXT" +
",Ans4 TEXT" +
")");

db.execSQL("INSERT INTO MyTable(Quiz,Ans0,Ans1,Ans2,Ans3,Ans4)values

(問題,回答,クイズ1,クイズ2,クイズ3,クイズ4)

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

次に、QuestionActivity.javaのコードを下記のように編集しました。

package jp.example.quiz;

import java.util.Random;
import jp.example.quiz.Database;
import jp.example.quiz.TitleActivity;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class QuestionActivity extends Activity implements OnClickListener{
private String path;
int Correct = 0;
int Cnt = 1;

SQLiteDatabase db; Cursor c; String Ans0; String Ans1; String Ans2; String Ans3; String Ans4; int No[] =new int[5]; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_question); Random rnd = new Random(); for(int i = 0; i < 5; i++){ No[i] = rnd.nextInt(10)+1; int x = No[i]; for(i = 0; i < 5; i++) if(No[i] ==x) break; } onQuestion(); } public void onQuestion() { String sql="SELECT _id,Quiz,Ans0,Ans1,Ans2,Ans3,Ans4 FROM MyTable WHERE _id=" + String.valueOf(No[Cnt - 1]); Database dbHelper = new Database(this); db = dbHelper.getReadableDatabase(); c=db.rawQuery(sql,null); c.moveToFirst(); String Quiz = c.getString(c.getColumnIndex("Quiz")); Ans0 = c.getString(c.getColumnIndex("Ans0")); Ans1 = c.getString(c.getColumnIndex("Ans1")); Ans2 = c.getString(c.getColumnIndex("Ans2")); Ans3 = c.getString(c.getColumnIndex("Ans3")); Ans4 = c.getString(c.getColumnIndex("Ans4")); TextView txt = (TextView)findViewById(R.id.Question); txt.setText(Quiz); Button btnAns1 = (Button)findViewById(R.id.button1); Button btnAns2 = (Button)findViewById(R.id.button2); Button btnAns3 = (Button)findViewById(R.id.button3); Button btnAns4 = (Button)findViewById(R.id.button4); btnAns1.setText(Ans1); btnAns2.setText(Ans2); btnAns3.setText(Ans3); btnAns4.setText(Ans4); btnAns1.setOnClickListener(this); btnAns2.setOnClickListener(this); btnAns3.setOnClickListener(this); btnAns4.setOnClickListener(this); } public void onClick(View v){ Button btn = (Button)v; String Answer = (String)btn.getText(); if(Ans0.equals(Answer)){ Correct++; } if(Cnt==5){ Intent intent = new Intent(this,TitleActivity.class); startActivity(intent); }else{ Cnt++; onQuestion(); } }

}

上記の内容で実行しましたところ、34行目までの問題がスタートを押すごとに、繰り返し
実行され、それ以降の問題が実行されません。すべての問題をコンパイルさせるためにはどのようにすればよいでしょうか。皆様のアドバイス、よろしくお願いいたします。
プロジェクトのandroid:targetSdkversion は15。javaは1.8です。

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

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

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

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

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

yona

2016/07/21 09:37 編集

・タグはSQLiteだけでなくAndroidも入れてください。 ・コードはコード用の記述法に修正してください。 ・34行目ってどこですか?
guest

回答1

0

MyTableデータベースの中身が期待通りになっていないのではないでしょうか? 中身を確認するか、データベースを初期化してやり直してみてはいかがでしょうか。

android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)

Called when the database is created for the first time.

投稿2016/07/23 11:31

matobaa

総合スコア2493

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問