2017-01-18 11 views
-5

Я новичок в программировании, и мне нужна помощь с моим кодом, я пытаюсь показать некоторые строки в TextView используя несколько кнопок. Общая идея заключается в нажатии кнопки «next», она отображает следующую строку в массиве строк, а при нажатии кнопки «предыдущий» она отображает предыдущую строку в массиве строк.Как получить строки из массива строк и показать их один за другим в TexttView с помощью кнопок (android)

(мой опыт с кодом до сих пор с C/C++ только, так что я очень извиняюсь, если мой код действительно перепутались, так как я не использую с ява кодами)

Это активность:

public class MainActivity extends AppCompatActivity { 
    int question_number = 0; 

    String[] mTestArray; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.sample); 

     mTestArray = getResources().getStringArray(R.array.questions_array); 
    } 

    protected void nextQuestion() 
    { 
     int maxIndex = mTestArray.length; 

     if(question_number == maxIndex) showResult(); 
     else 
     { 
      question_number++; 
      updateTextView(question_number); 
     } 
    } 

    protected void previousQuestion() 
    { 
     int minIndex = 0; 
     Button btnPrevious = (Button) findViewById(R.id.btnPrevious); 

     if (question_number == minIndex) btnPrevious.setEnabled(false); 
     else 
     { 
      question_number--; 
      updateTextView(question_number); 
     } 
    } 

    private void updateTextView(int i) { 
     TextView textView = (TextView)findViewById(R.id.txtQuestion); 
     textView.setText(mTestArray[i]); 
    } 

    private void showResult() 
    { 
     //show result 
    } 
} 

функция nextQuestion будет отображать следующую строку в массив строк «questions_array» функция previousQuestion будет отображать предыдущую строку в массив строк «question_array» и функции updateTextView является одним изменяя строку в TextView «txtQuestion»

Это файл XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 


    <TextView 
     android:textAppearance="?android:textAppearanceLarge" 
     android:textColor="@color/black" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/btnNext" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="78dp" 
     android:id="@+id/txtQuestion" 
     /> 

    <Button 
     android:text="Previous" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/btnPrevious" 
     android:onClick="previousQuestion" 
     android:layout_below="@+id/txtQuestion" 
     android:layout_toLeftOf="@+id/btnNext" 
     android:layout_toStartOf="@+id/btnNext" 
     android:layout_marginRight="62dp" 
     android:layout_marginEnd="62dp" /> 

    <Button 
     android:text="Next" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="176dp" 
     android:id="@+id/btnNext" 
     android:onClick="nextQuestion" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:layout_marginRight="71dp" 
     android:layout_marginEnd="71dp" /> 

</RelativeLayout> 

и это string.xml, который содержит массив строк:

<resources> 
    <string name="app_name">My Application</string> 

    <string-array name="questions_array"> 
     <item>Question 1</item> 
     <item>Question 2</item> 
     <item>Question 3</item> 
     <item>Question 4</item> 
     <item>Question 5</item> 
     <item>Question 6</item> 
     <item>Question 7</item> 
     <item>Question 8</item> 
     <item>Question 9</item> 
     <item>Question 10</item> 
    </string-array> 
</resources> 

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

К сожалению, Моё приложение остановилось

Извините за мой плохой английский, и благодаря, прежде чем для Помогите!

+0

подсказка: определить счетчик и everyOnClick increse этого значения и получить элемент из массива по этому индексу –

+0

QUESTION_NUMBER всегда 0! вы не добавляете или не вычитаете что-либо со своего счетчика. – gmetax

+0

жаль, что я набрал неправильный код Java в действии, я уже пробовал использовать счетчик, который увеличивает каждый onClick, но он все еще не работает. – Kenly

ответ

1

Функция для onClick атрибута в XML должно быть что-то вроде,

public void yourFunction (View view) { 
    //Your code 
} 

Поскольку вы не добавили View в качестве аргумента вашей функции, макет никогда не собирается, чтобы добраться до него, следовательно, когда вы нажимаете на свою кнопку, приложение падает.

Кроме того, необходимо создать счетчик для подсчета, какой индекс вы на, сделать что-то подобное, переменную-член int count=0; и на каждый следующий вопрос сделать его count++; и на каждом предыдущем вопросе сделать count--;

+0

спасибо большое! Я только что начал свой первый Android-код и не очень много разбираюсь в том, как работает материал – Kenly

0
String question[] = {"a","b","c","d","e"}; 
int count = 0; 
findViewById(R.id.button).setOnClickListener(new OnClickLisetner{ 
if(count<question.lenght()){ 
count++; 
Log.d("Question",question[count]); 
}else{ 
    count=0; 
} 
}); 
0

После просмотра кода, вам не удалось прирастить question_number каждый раз, когда либо nextQuestion() или previousQuestion() называется. Увеличение этого, скорее всего, позволит вам пройти через ваш массив строк.

+0

Извините, я положил старую копию своей деятельности моя ошибка была в функции onClick, которую я использовал – Kenly

0

Вы должны поддерживать question_number при нажатии nextQuestion() и previousQuestion().

добавить question_number++ в nextQuestion() функция и question_number-- в previousQuestion() функция.

1

Следуйте за этим ,

List<String> aList = Arrays.asList(getResources().getStringArray(R.array.questions_array)); 
final ListIterator<String> listIterator = aList.listIterator(); 

protected void nextQuestion() { 
    if (listIterator.hasNext()){ 
       textview.setText(listIterator.next()); 
      } 
    } 

    protected void previousQuestion() { 
    if (listIterator.hasPrevious()){ 
       textview.setText(listIterator.previous()); 
      } 
    }