2011-02-03 3 views
0

Я новичок в java, и я пытаюсь запустить метод после нажатия кнопки, и я не уверен, если я нахожусь на правильном пути. Я выбираю 10 вопросов из базы данных Sqlite и хотел бы циклически перебирать каждый вопрос 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); 

запросов базы данных и распределения для Cursor

//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? откуда вы знаете? –

+0

Привет, Берт, первый вопрос отображается нормально, но он падает при нажатии кнопки. Поэтому мне кажется, что showQuestions запускается в первый раз, когда он вызывается, но не тогда, когда я пытаюсь называть его нажатием кнопки. Thx – Cam

+0

Я запускаю код без строк намерения в настоящий момент отредактировал свой главный пост, чтобы отразить это. – Cam

ответ

1
Questions.this.showQuestions(null); 

Почему вы передаете null методу showQuestions?

Позвольте мне угадать - это сбой с NullPointerException.

ли вы пробовали showQuestions(getQuestions())

EDIT: Некоторые общие предложения:

  • не нагружают вопрос каждый раз, когда кнопка нажата.

  • сделать некоторые Question класса, содержащего всю необходимой информацию для вопроса

  • когда onCreate вызывается, открыть базу данных и загрузить все необходимые вопросы в каком-том Collection, как ArrayList<Question>

  • Каждый раз, когда пользователь нажмите на кнопку, введите следующий Question элемент из Collection и показать его

+0

Спасибо. Fiction У меня в моем коде есть слушатель onClick. Я тестировал свои кнопки с Intent, и они, похоже, работают нормально. – Cam

+0

@Cam Я обновил свой ответ. – fiction

+0

Не уверен, что я попытался поместить туда курсор и questionNum, но получил ошибки. Может ли это быть моей проблемой? – Cam

Смежные вопросы