Я новичок в программировании, и мне нужна помощь с моим кодом, я пытаюсь показать некоторые строки в 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>
Я попытался запустить приложение и он работает без ошибок. Однако, всякий раз, когда я пытался нажав на кнопки, приложение будет закрыто автоматически, и это окно сообщения поп:
К сожалению, Моё приложение остановилось
Извините за мой плохой английский, и благодаря, прежде чем для Помогите!
подсказка: определить счетчик и everyOnClick increse этого значения и получить элемент из массива по этому индексу –
QUESTION_NUMBER всегда 0! вы не добавляете или не вычитаете что-либо со своего счетчика. – gmetax
жаль, что я набрал неправильный код Java в действии, я уже пробовал использовать счетчик, который увеличивает каждый onClick, но он все еще не работает. – Kenly