2011-02-03 88 views
0

我是新來的java,我試圖運行一個方法,一旦按鈕被點擊,我不確定我是否在正確的軌道上。我從Sqlite數據庫中選擇了10個問題,並且每次點擊按鈕時都希望遍歷每個問題0-9。一旦問了所有10個問題,我就會轉到另一個活動。我有應用程序顯示第一個問題的罰款,但我無法調用showQuestions方法,並在點擊按鈕並將其傳遞給方法時增加questionNum int。任何幫助,將不勝感激!調用方法從按鈕點擊

這是我試圖調用的showQuestions方法。

public void showQuestions(Cursor cursor) { 
    cursor.moveToPosition(questionNum); 
    while (cursor.moveToNext()) { 
     // Collect String Values from Query 
     StringBuilder questiontxt = new StringBuilder(""); 
     StringBuilder answertxt1 = new StringBuilder(""); 
     StringBuilder answertxt2 = new StringBuilder(""); 
     StringBuilder answertxt3 = new StringBuilder(""); 
     StringBuilder answertxt4 = new StringBuilder(""); 
     String question = cursor.getString(2); 
     String answer = cursor.getString(3); 
     String option1 = cursor.getString(4); 
     String option2 = cursor.getString(5); 
     String option3 = cursor.getString(6); 
     questiontxt.append(question).append(""); 
     answertxt1.append(answer).append(""); 
     answertxt2.append(option1).append(""); 
     answertxt3.append(option2).append(""); 
     answertxt4.append(option3).append(""); 
    } 
} 

這是我正在使用的按鈕的代碼。有4個按鈕。

public void onClick(View v) { 
    switch (v.getId()) { 

     case R.id.option1_button: 
     if (questionNum<9) { 
      questionNum ++; 
     } 
     Questions.this.showQuestions(null); 
     break; 
    } 

這是按鈕的XML代碼。

<Button 
    android:id="@+id/option1_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/option3_button"/> 

的OnClick監聽器按鈕

View option1_button = findViewById(R.id.option1_button); 
option1_button.setOnClickListener(this); 

數據庫查詢,並分配到光標

//Get the questions and allocate them to the Cursor 
public Cursor getQuestions() { 
//Select Query 
String loadQuestions = "SELECT * FROM questionlist ORDER BY QID LIMIT 10"; 
SQLiteDatabase db = questions.getReadableDatabase(); 
Cursor cursor = db.rawQuery(loadQuestions, null); 
startManagingCursor(cursor); 
return cursor; 
} 

在此先感謝。

+0

`但我在調用showQuestions方法時遇到了問題 - 這非常模糊,有什麼症狀?它崩潰了嗎?它做什麼? `showQuestions`運行了嗎?你怎麼知道的? – 2011-02-03 23:31:59

+0

嘿伯特第一個問題顯示正常,但它在按鈕單擊時崩潰。因此,ShowQuestions在第一次調用時會運行,但在嘗試從按鈕單擊時調用它時,看起來並不是這樣。 Thx – Cam 2011-02-03 23:34:51

回答

1
Questions.this.showQuestions(null); 

爲什麼將null傳遞給showQuestions方法?

讓我猜 - 它崩潰與NullPointerException

你有沒有試過 showQuestions(getQuestions())

編輯: 一些一般性的建議:

  • 每次單擊該按鈕時,不加載的問題。

  • 使包含所有需要的信息的問題

  • onCreate被調用時,打開數據庫並加載一些Collection所有需要的問題,比如ArrayList<Question>

  • 每次當用戶一些Question類點擊一個按鈕,從Collection獲得下一個Question元素並顯示它