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

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

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

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

Android Studio

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

Q&A

1回答

3189閲覧

Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

Android Studio

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

0グッド

0クリップ

投稿2017/05/07 09:25

編集2017/05/07 09:43

タイトルのようなエラーコードが出てしまって困っています。
文字数が足りないので自分でエラーと関係しそうなところだけ抜き出してあります。
ほかのところが原因になっている可能性がある場合は言ってください。
クイズは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"; } } コード

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

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

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

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

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

swordone

2017/05/07 09:36

QuizContract.Quizクラスを掲載してください。
退会済みユーザー

退会済みユーザー

2017/05/07 09:43

追加しました。よろしくお願いします。
guest

回答1

0

Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0

というメッセージをみると、「リザルトセットが空だったのに、getStringでデータを取り出そうとした」のが原因に見えます。

投稿2017/05/08 04:38

KSwordOfHaste

総合スコア18394

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

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

退会済みユーザー

退会済みユーザー

2017/05/08 09:16

データベースのバージョンをあげたら治りました。 一応想定通りには動いているのですがそれだけが原因でしょうか? ほかに気にすべきところはありますか?
KSwordOfHaste

2017/05/08 09:45

自分はこのクラスを使った経験がないですが、リザルトセットが空かどうかをチェックせずにカラムデータを取り出すコードがDBのバージョンによって許されるようには思えませんでした。逆に許されるとしたら何が返されるのか疑問に感じました。
退会済みユーザー

退会済みユーザー

2017/05/15 08:10

どこを修正するのが正しいのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問