覆盖android中的默认屏幕内容

时间:2015-04-20 14:27:25

标签: java android

我正在开发一个测验应用,我的活动看起来像这样:

     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方法得到了这个问题。

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

似乎没有足够的信息来帮助你。 displayRecordSet做了什么以及如何定义mOptionButtonX?也许您打算更改按钮的文本,而不是背景颜色?

另外,2件事。尝试使用更多描述性变量名称而不是&#34; flag&#34;等等。其次,您不应该将文本硬编码到您不想使用的布局文件中。只需将文字设置为&#34;&#34;,无论如何都要覆盖它。