Android显示随机问题
如何显示随机问题。我查看了其他帖子,但没有找到答案。这有三个难度容易中难。我想把每一个困难的问题都随机列出来。谢谢 提问活动:Android显示随机问题,android,Android,如何显示随机问题。我查看了其他帖子,但没有找到答案。这有三个难度容易中难。我想把每一个困难的问题都随机列出来。谢谢 提问活动: public class QuizActivity extends Activity { int score = 0; int qnum = 1; TextView txtQuestion; RadioButton rda, rdb, rdc, rdd; Button butNext; RadioGroup rdgrp;
public class QuizActivity extends Activity {
int score = 0;
int qnum = 1;
TextView txtQuestion;
RadioButton rda, rdb, rdc, rdd;
Button butNext;
RadioGroup rdgrp;
String corAnswer = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.activity_quiz);
DbHelper db = new DbHelper(this);
rdgrp = (RadioGroup) findViewById(R.id.questionAndAnswers);
txtQuestion = (TextView) findViewById(R.id.textView1);
rda = (RadioButton) findViewById(R.id.radio0);
rdb = (RadioButton) findViewById(R.id.radio1);
rdc = (RadioButton) findViewById(R.id.radio2);
rdd = (RadioButton) findViewById(R.id.radio3);
butNext = (Button) findViewById(R.id.button1);
corAnswer = "";
onCreateQuestion();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_quiz, menu);
return true;
}
public void onCreateQuestion() {
String level = getIntent().getExtras().getString("level");
DbHelper db = new DbHelper(this);
db.getQuestByLevel(level, qnum);
txtQuestion.setText(db.question);
rda.setText(db.optionA);
rdb.setText(db.optionB);
rdc.setText(db.optionC);
rdd.setText(db.optionD);
corAnswer = db.answer;
qnum++;
}
public void onClickNext(View view) {
String level = getIntent().getExtras().getString("level");
DbHelper db = new DbHelper(this);
db.getQuestByLevel(level, qnum);
RadioGroup grp = (RadioGroup) findViewById(R.id.questionAndAnswers);
RadioButton answer = (RadioButton) findViewById(grp.getCheckedRadioButtonId());
if (answer == null)
{
Toast.makeText(QuizActivity.this, "select an answer please", Toast.LENGTH_SHORT).show();
return;
}
if (corAnswer!= null && corAnswer.equalsIgnoreCase((String) answer.getText()))
{
score++;
Log.d("answer", "Your score" + score);
}
if (qnum <= 5) {
} else {
Intent intent = new Intent(QuizActivity.this, ResultActivity.class);
Bundle b = new Bundle();
b.putInt("score", score);
intent.putExtras(b);
startActivity(intent);
finish();
}
txtQuestion.setText(db.question);
rda.setText(db.optionA);
rdb.setText(db.optionB);
rdc.setText(db.optionC);
rdd.setText(db.optionD);
corAnswer = db.answer;
qnum++;
rdgrp.clearCheck();
}
}
日志:
01-22 23:23:41.285 8685-8685/com.dreamteam.quiz.project
E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.dreamteam.quiz.project, PID: 8685
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dreamteam.quiz.project/com.example.quiz.project.QuizActivity}: android.database.sqlite.SQLiteException: near "ORDER": syntax error (code 1): , while compiling: SELECT * FROM quiz WHERE level = 'EASY' AND q_number = 1 + ORDER BY RANDOM() LIMIT 5
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2319)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2370)
at android.app.ActivityThread.access$800(ActivityThread.java:155)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1243)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5426)
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:1268)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.database.sqlite.SQLiteException: near "ORDER": syntax error (code 1): , while compiling: SELECT * FROM quiz WHERE level = 'EASY' AND q_number = 1 + ORDER BY RANDOM() LIMIT 5
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1112)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:689)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1433)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1372)
at com.example.quiz.project.DbHelper.getQuestByLevel(DbHelper.java:97)
at com.example.quiz.project.QuizActivity.onCreateQuestion(QuizActivity.java:60)
at com.example.quiz.project.QuizActivity.onCreate(QuizActivity.java:45)
at android.app.Activity.performCreate(Activity.java:5296)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2283)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2370)
at android.app.ActivityThread.access$800(ActivityThread.java:155)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1243)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5426)
at java.lang.reflect.Method.invokeNative(Native Method)
01-22 23:23:41.285 8685-8685/com.dreamteam.quick.project
E/AndroidRuntime﹕ 致命异常:主
流程:com.dreamteam.quick.project,PID:8685
java.lang.RuntimeException:无法启动活动组件信息{com.dreamteam.quick.project/com.example.quick.project.quizaActivity}:android.database.sqlite.SQLiteException:接近“顺序”:语法错误(代码1):,编译时:从测验中选择*,其中级别='EASY',q_number=1+随机顺序()限制5
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2319)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2370)
在android.app.ActivityThread.access$800(ActivityThread.java:155)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1243)上
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:136)
位于android.app.ActivityThread.main(ActivityThread.java:5426)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:515)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:1268)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
在dalvik.system.NativeStart.main(本机方法)
原因:android.database.sqlite.SQLiteException:接近“顺序”:语法错误(代码1):,编译时:从测验中选择*级别='EASY',q_number=1+随机顺序()限制5
位于android.database.sqlite.SQLiteConnection.nativePrepareStatement(本机方法)
位于android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1112)
位于android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:689)
位于android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
位于android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58)
位于android.database.sqlite.SQLiteQuery(SQLiteQuery.java:37)
位于android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
位于android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1433)
位于android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1372)
位于com.example.quick.project.DbHelper.getQuestByLevel(DbHelper.java:97)
在com.example.quick.project.QuizActivity.onCreateQuestion(QuizActivity.java:60)上
在com.example.quick.project.QuizActivity.onCreate(QuizActivity.java:45)上
位于android.app.Activity.performCreate(Activity.java:5296)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2283)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2370)
在android.app.ActivityThread.access$800(ActivityThread.java:155)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1243)上
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:136)
位于android.app.ActivityThread.main(ActivityThread.java:5426)
位于java.lang.reflect.Method.Invokenactive(本机方法)
使用查询:
String selectQuery = "SELECT * FROM " + TABLE_QUIZ + " WHERE " + q_level +" = '" + level + "' AND "+QuestionNumber+" = "+qnum+" + ORDER BY RANDOM() LIMIT 1" ;
我认为通过更改查询,您可以参与解决方案。使用查询:
String selectQuery = "SELECT * FROM " + TABLE_QUIZ + " WHERE " + q_level +" = '" + level + "' AND "+QuestionNumber+" = "+qnum+" + ORDER BY RANDOM() LIMIT 1" ;
我认为通过更改查询,您可以参与解决方案。将结果存储在模型类中,然后将其随机化
class Question{
int id;
String questionText;
String[] options;
}
Question[] questions = new Question[cursor.size()];
//put data into questions
Random rnd = new Random();
for(int i = 0; i < question.length; i++){
//using randomizer swap objects
}
课堂提问{
int-id;
字符串文本;
字符串[]选项;
}
问题[]问题=新问题[cursor.size()];
//质疑数据
随机rnd=新随机();
for(int i=0;i
现在选择要显示的前5个、10个或20个问题,不会有重复的问题,也会有随机顺序,将结果存储在模型类中,然后将其随机化
class Question{
int id;
String questionText;
String[] options;
}
Question[] questions = new Question[cursor.size()];
//put data into questions
Random rnd = new Random();
for(int i = 0; i < question.length; i++){
//using randomizer swap objects
}
课堂提问{
int-id;
字符串文本;
字符串[]选项;
}
问题[]问题=新问题[cursor.size()];
//质疑数据
随机rnd=新随机();
for(int i=0;i
现在选择要显示的前5个或前10个或前20个问题,在我声明的代码中不会有重复,也会有随机顺序。我就不能在那里随机化吗?看看Sumit Chakroborty的解决方案,如果可行的话。对sqlite使用random()并限制5;(或者你想要的号码)我不知道它的速度。写查询时也可以看到这样的代码,希望帮助我尝试以下代码:String selectQuery=“SELECT*FROM”+TABLE\u quick+”,其中“+q\u level+”=“+level+””和“+QuestionNumber+”=“+qnum+”+ORDER BY RANDOM()LIMIT 5”;但它仍然没有给出随机的问题。在我声明的代码中。我就不能在那里随机化吗?看看Sumit Chakroborty的解决方案,如果可行的话。对sqlite使用random()并限制5;(或者你想要的号码)我不知道它的速度。写查询时也可以看到这样的代码,希望帮助我尝试以下代码:String selectQuery=“SELECT*FROM”+TABLE\u quick+”,其中“+q\u level+”=“+level+””和“+QuestionNumber+”=“+qnum+”+ORDER BY RANDOM()LIMIT 5”;但它仍然没有给出随机问题。很抱歉,它将是随机的()。请检查并让我知道应用程序是否仍然崩溃应用程序仍然崩溃抱歉