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

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

ただいまの
回答率

89.99%

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

受付中

回答 1

投稿

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

litatono

score 6

クイズタイトル、四択のクイズを書き込むためのレイアウトファイル作成。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です。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • yona

    2016/07/21 18:34 編集

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

    キャンセル

回答 1

+1

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

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

Called when the database is created for the first time

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

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