タイトルのようなエラーコードが出てしまって困っています。
文字数が足りないので自分でエラーと関係しそうなところだけ抜き出してあります。
ほかのところが原因になっている可能性がある場合は言ってください。
クイズはsqlで管理しているのですが最初quiz3までしか書いていなかったときは正常に動いていたのですが、113まで追加したところエラーが出てしまいましたそれが何かの原因になっていると思うのですが、、、
ご教授お願いします。
Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
at android.database.AbstractCursor.checkPosition(AbstractCursor.java:426)
at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
at sample.quiz.Quiz.set(Quiz.java:78)
at sample.quiz.Quiz.random(Quiz.java:64)
at sample.quiz.Quiz.onCreate(Quiz.java:52)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2212)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2298)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1246)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:212)
at android.app.ActivityThread.main(ActivityThread.java:5151)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
at dalvik.system.NativeStart.main(Native Method)
public class Quiz extends AppCompatActivity { int score = 0; int mode = 0; int count = 0; int QuizNo; String quiz; String correct; String answer1; String answer2; String answer3; String answer4; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_quiz); Intent intent = getIntent(); mode = intent.getIntExtra(MainActivity.EXTRA_MODE,0); if (mode == 0){ mode = intent.getIntExtra(Result.EXTRA_MODE,0); } random(); } public void random(){ TextView score_text = (TextView)findViewById(R.id.score); score_text.setText(String.valueOf(score)); Random random = new Random(); QuizNo = random.nextInt(113); if (QuizNo == 0){ random(); }else{ set(); } private void set(){ QuizOpenHelper quizOpenHelper = new QuizOpenHelper(this); SQLiteDatabase sqLiteDatabase = quizOpenHelper.getReadableDatabase(); String sql = "select quiz,correct,answer1,answer2,answer3,answer4 from quiz where _id =" + QuizNo; Cursor cursor = sqLiteDatabase.rawQuery(sql, null); cursor.moveToFirst(); quiz = cursor.getString(cursor.getColumnIndex("quiz")); correct = cursor.getString(cursor.getColumnIndex("correct")); }
public class QuizOpenHelper extends SQLiteOpenHelper{ public static final String DB_NAME = "sirequiz.db"; public static final int DB_VERSION = 1; public static final String CREATE_TABLE = "create table " +QuizContract.Quiz.TABLE_NAME + "("+ QuizContract.Quiz._ID + " integer primary key autoincrement,"+ QuizContract.Quiz.COL_QUIZ + " text," + QuizContract.Quiz.COL_CORRECT +" text," + QuizContract.Quiz.COL_ANSWER1 +" text," + QuizContract.Quiz.COL_ANSWER2 +" text," + QuizContract.Quiz.COL_ANSWER3 +" text," + QuizContract.Quiz.COL_ANSWER4 +" text)"; public static final String INIT_TABLE = "insert into " + QuizContract.Quiz.TABLE_NAME + " (quiz,correct,answer1,answer2,answer3,answer4) values " + "('quiz1','correct1','answer1-1','answer2-1','answer3-1','answer4-1')," + "('quiz2','correct2','answer1-2','answer2-2','answer3-2','answer4-2')," + . . . . "('quiz113','correct113','answer1-113','answer2-113','answer3-113','answer4-113')"; public static final String DROP_TABLE = "drop table if exists " + QuizContract.Quiz.TABLE_NAME; public QuizOpenHelper(Context context){ super(context,DB_NAME,null,DB_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_TABLE); db.execSQL(INIT_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL(DROP_TABLE); onCreate(db); } }
public final class QuizContract { public QuizContract() { } public static abstract class Quiz implements BaseColumns { public static final String TABLE_NAME = "quiz"; public static final String _ID = "_id"; public static final String COL_QUIZ = "quiz"; public static final String COL_CORRECT = "correct"; public static final String COL_ANSWER1 = "answer1"; public static final String COL_ANSWER2 = "answer2"; public static final String COL_ANSWER3 = "answer3"; public static final String COL_ANSWER4 = "answer4"; } } コード