我正在开发一个测验应用,我的活动看起来像这样:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz);
//click this button to go to the next question
mButton = (Button)findViewById(R.id.nextButton);
//open the DB
openDB();
//Check if the table has data
if(!(myDb.checkDataExists())) {
insertRows();
}
//display a random question
displayQuestion();
}
private void displayQuestion() {
randomNumber = getRandomNumber();
//check if number used or not
if (isNumberNew(String.valueOf(randomNumber))) {
Cursor cursor = myDb.getRow(randomNumber);
displayRecordSet(cursor, optionAnswer);
mOptionButton1.setBackgroundColor(color);
mOptionButton2.setBackgroundColor(color);
mOptionButton3.setBackgroundColor(color);
mOptionButton4.setBackgroundColor(color);
flag = true;
}
}
private void displayRecordSet(Cursor cursor, Map<String, String> optionAnswer) {
int id = 0;
String question = "", option = "", rightAnswer = "";
ArrayList<String> optionList = new ArrayList<String>();
mImageView = (ImageView)findViewById(R.id.storyImageView);
mQuestionTextView = (TextView)findViewById(R.id.questionTextView);
mOptionButton1 = (Button)findViewById(R.id.button);
mOptionButton2 = (Button)findViewById(R.id.button2);
mOptionButton3 = (Button)findViewById(R.id.button3);
mOptionButton4 = (Button)findViewById(R.id.button4);
}
if (cursor.moveToFirst()) {
do {
id = cursor.getInt(0);
question = cursor.getString(1);
option = cursor.getString(3);
rightAnswer = cursor.getString(5);
optionList.add(option);
optionAnswer.put(option,rightAnswer);
} while (cursor.moveToNext());
mQuestionTextView.setText(question);
mOptionButton1.setText(optionList.get(0));
mOptionButton2.setText(optionList.get(1));
mOptionButton3.setText(optionList.get(2));
mOptionButton4.setText(optionList.get(3));
}
cursor.close();
}
displayQuestion方法应该从db中获取一个随机问题,然后覆盖选项按钮和问题文本视图的值。但是,当应用程序启动时,第一个问题仍然是我在视图中硬编码的问题。换句话说,当我调用setContentView(R.layout.activity_quiz)时; ...我在选项按钮和问题文本视图中输入默认值。但是,我不想显示这些值,因为它们只是占位符。我想显示数据库中的问题,我通过dipslayQuestion方法得到了这个问题。
有谁知道如何解决这个问题?
答案 0 :(得分:0)
似乎没有足够的信息来帮助你。 displayRecordSet做了什么以及如何定义mOptionButtonX?也许您打算更改按钮的文本,而不是背景颜色?
另外,2件事。尝试使用更多描述性变量名称而不是&#34; flag&#34;等等。其次,您不应该将文本硬编码到您不想使用的布局文件中。只需将文字设置为&#34;&#34;,无论如何都要覆盖它。