按两次按钮使其工作
press button twice to make it work
我是android的初学者,我正在制作一个与SpellBee相关的应用程序。问题是我在屏幕上有 2 个按钮,一个用于下一个单词,一个用于前一个单词。开始时 a default first word shows on screen . After pressing next word for the first time it displays next word from the database list. But when i press previous button, on first click it does nothing and on second click it shows the previous word, then on clicking next word button it does nothing and on second click it moves to next word. how can i solve this twice button problem This is my XML for Buttons
按钮代码
public void next_click(View view) {
if(iterator <= wordList.size()) {
word.setText(wordList.get(iterator));
definition.setText(definitionList.get(iterator));
usage.setText(usageList.get(iterator));
iterator++;
/*if (iterator == wordList.size()) {
Toast.makeText(Level1Activity.this, "Level 1 Completed",
Toast.LENGTH_SHORT).show();
next_word.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(Level1Activity.this,
SelectLevelActivity.class);
startActivity(i);
}
});
}*/
}
}
public void previous_click(View view) {
if(iterator != 0) {
--iterator;
word.setText(wordList.get(iterator));
definition.setText(definitionList.get(iterator));
usage.setText(usageList.get(iterator));
}
}
XML
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.msiprestige.spellbee.Level1Activity"
android:background="@drawable/bookshelf"
android:alpha="0.9">
<TextView
android:id="@+id/textView10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/level_1"
android:textColor="#fff"
android:textSize="50sp"
android:visibility="visible"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/word"
android:layout_width="261dp"
android:layout_height="54dp"
android:layout_marginTop="23dp"
android:ems="10"
android:gravity="center_horizontal"
android:textColor="#fff"
android:textColorLink="#fff"
android:textSize="22sp"
android:textStyle="bold"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView10" />
<TextView
android:id="@+id/textView12"
android:layout_width="80dp"
android:layout_height="24dp"
android:layout_marginStart="4dp"
android:text="@string/definition"
android:textColor="#fff"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.36" />
<TextView
android:id="@+id/textView13"
android:layout_width="54dp"
android:layout_height="24dp"
android:layout_marginStart="16dp"
android:layout_marginTop="109dp"
android:text="@string/usage"
android:textColor="#fff"
android:textSize="18sp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView12" />
<TextView
android:id="@+id/definition"
android:layout_width="277dp"
android:layout_height="106dp"
android:layout_marginEnd="20dp"
android:layout_marginTop="48dp"
android:width="0dip"
android:ems="10"
android:textColor="#fff"
android:textSize="15sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/word" />
<TextView
android:id="@+id/usage"
android:layout_width="277dp"
android:layout_height="106dp"
android:layout_marginEnd="20dp"
android:layout_marginTop="27dp"
android:width="0dip"
android:ems="10"
android:textColor="#fff"
android:textSize="15sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/definition" />
<Button
android:id="@+id/previous_word"
android:layout_width="154dp"
android:layout_height="56dp"
android:layout_marginBottom="38dp"
android:layout_marginLeft="36dp"
android:onClick="previous_click"
android:text="Previous Word"
android:focusable="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" />
<Button
android:id="@+id/next_word"
android:layout_width="154dp"
android:layout_height="56dp"
android:layout_marginBottom="36dp"
android:layout_marginRight="28dp"
android:onClick="next_click"
android:text="@string/next_word"
android:focusable="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent" />
</android.support.constraint.ConstraintLayout>
我想如果你把代码改成这个,你的问题就解决了!
并且要知道你的错误,你在将单词设置为 textview 之后更改了 iterator 变量。在 next_click 的 if 中,它应该小于 wordList.size() - 1 以避免 IndexOutOfBound异常!
public void next_click(View view) {
if(iterator < wordList.size()-1) {
iterator++;
word.setText(wordList.get(iterator));
definition.setText(definitionList.get(iterator));
usage.setText(usageList.get(iterator));
startAnotherActivity(iterator);
}
}
public void previous_click(View view) {
if(iterator != 0) {
iterator--;
word.setText(wordList.get(iterator));
definition.setText(definitionList.get(iterator));
usage.setText(usageList.get(iterator));
startAnotherActivity(iterator);
}
}
private void startAnotherActivity(int your_extra_here) {
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("key_for_extra", your_extra_here);
startActivity(intent);
}
我觉得你需要将迭代器传递给另一个 activity 因此我在这里为你提供了一个额外的。如果你不需要它就省略那部分!!!
这是逻辑错误。由于您的列表 index 以 0 开头,当您显示第一个单词时,我猜 iterator index 已变为 1。现在,当您单击下一步时,您 会在索引 1 处显示单词并递增迭代器。现在 迭代器是 2.
现在,单击上一个按钮。这里第一个迭代器是递减的,即 迭代器是 1。并在索引 1 处显示 单词,该单词已显示在屏幕上。所以你觉得它什么都不做,但它实际上执行了你的逻辑。只是你的逻辑在设置同一个词。现在再次单击上一个按钮,迭代器将为 0 并且它在索引 0.
处显示单词
与下一个按钮相同的情况。现在,点击下一步按钮。您首先设置单词,即 在索引 0 处显示单词,该单词已经显示并递增 迭代器,它将变为 1。现在再次单击下一步按钮,它会在索引 1 处显示 word 并将 iterator 递增到 2.
确保您的计数器即迭代器始终指向当前显示的当前单词索引。当点击next时,看到iterator+1在单词列表的范围内,如果是则增加它并显示该索引处的单词。同样,在显示前一个单词时,检查index-1是否在单词列表的范围内,如果是则将其递减,然后显示该索引处的单词。希望你明白。
我是android的初学者,我正在制作一个与SpellBee相关的应用程序。问题是我在屏幕上有 2 个按钮,一个用于下一个单词,一个用于前一个单词。开始时 a default first word shows on screen . After pressing next word for the first time it displays next word from the database list. But when i press previous button, on first click it does nothing and on second click it shows the previous word, then on clicking next word button it does nothing and on second click it moves to next word. how can i solve this twice button problem This is my XML for Buttons
按钮代码
public void next_click(View view) {
if(iterator <= wordList.size()) {
word.setText(wordList.get(iterator));
definition.setText(definitionList.get(iterator));
usage.setText(usageList.get(iterator));
iterator++;
/*if (iterator == wordList.size()) {
Toast.makeText(Level1Activity.this, "Level 1 Completed",
Toast.LENGTH_SHORT).show();
next_word.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(Level1Activity.this,
SelectLevelActivity.class);
startActivity(i);
}
});
}*/
}
}
public void previous_click(View view) {
if(iterator != 0) {
--iterator;
word.setText(wordList.get(iterator));
definition.setText(definitionList.get(iterator));
usage.setText(usageList.get(iterator));
}
}
XML
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.msiprestige.spellbee.Level1Activity"
android:background="@drawable/bookshelf"
android:alpha="0.9">
<TextView
android:id="@+id/textView10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/level_1"
android:textColor="#fff"
android:textSize="50sp"
android:visibility="visible"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/word"
android:layout_width="261dp"
android:layout_height="54dp"
android:layout_marginTop="23dp"
android:ems="10"
android:gravity="center_horizontal"
android:textColor="#fff"
android:textColorLink="#fff"
android:textSize="22sp"
android:textStyle="bold"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView10" />
<TextView
android:id="@+id/textView12"
android:layout_width="80dp"
android:layout_height="24dp"
android:layout_marginStart="4dp"
android:text="@string/definition"
android:textColor="#fff"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.36" />
<TextView
android:id="@+id/textView13"
android:layout_width="54dp"
android:layout_height="24dp"
android:layout_marginStart="16dp"
android:layout_marginTop="109dp"
android:text="@string/usage"
android:textColor="#fff"
android:textSize="18sp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView12" />
<TextView
android:id="@+id/definition"
android:layout_width="277dp"
android:layout_height="106dp"
android:layout_marginEnd="20dp"
android:layout_marginTop="48dp"
android:width="0dip"
android:ems="10"
android:textColor="#fff"
android:textSize="15sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/word" />
<TextView
android:id="@+id/usage"
android:layout_width="277dp"
android:layout_height="106dp"
android:layout_marginEnd="20dp"
android:layout_marginTop="27dp"
android:width="0dip"
android:ems="10"
android:textColor="#fff"
android:textSize="15sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/definition" />
<Button
android:id="@+id/previous_word"
android:layout_width="154dp"
android:layout_height="56dp"
android:layout_marginBottom="38dp"
android:layout_marginLeft="36dp"
android:onClick="previous_click"
android:text="Previous Word"
android:focusable="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" />
<Button
android:id="@+id/next_word"
android:layout_width="154dp"
android:layout_height="56dp"
android:layout_marginBottom="36dp"
android:layout_marginRight="28dp"
android:onClick="next_click"
android:text="@string/next_word"
android:focusable="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent" />
</android.support.constraint.ConstraintLayout>
我想如果你把代码改成这个,你的问题就解决了! 并且要知道你的错误,你在将单词设置为 textview 之后更改了 iterator 变量。在 next_click 的 if 中,它应该小于 wordList.size() - 1 以避免 IndexOutOfBound异常!
public void next_click(View view) {
if(iterator < wordList.size()-1) {
iterator++;
word.setText(wordList.get(iterator));
definition.setText(definitionList.get(iterator));
usage.setText(usageList.get(iterator));
startAnotherActivity(iterator);
}
}
public void previous_click(View view) {
if(iterator != 0) {
iterator--;
word.setText(wordList.get(iterator));
definition.setText(definitionList.get(iterator));
usage.setText(usageList.get(iterator));
startAnotherActivity(iterator);
}
}
private void startAnotherActivity(int your_extra_here) {
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("key_for_extra", your_extra_here);
startActivity(intent);
}
我觉得你需要将迭代器传递给另一个 activity 因此我在这里为你提供了一个额外的。如果你不需要它就省略那部分!!!
这是逻辑错误。由于您的列表 index 以 0 开头,当您显示第一个单词时,我猜 iterator index 已变为 1。现在,当您单击下一步时,您 会在索引 1 处显示单词并递增迭代器。现在 迭代器是 2.
现在,单击上一个按钮。这里第一个迭代器是递减的,即 迭代器是 1。并在索引 1 处显示 单词,该单词已显示在屏幕上。所以你觉得它什么都不做,但它实际上执行了你的逻辑。只是你的逻辑在设置同一个词。现在再次单击上一个按钮,迭代器将为 0 并且它在索引 0.
处显示单词与下一个按钮相同的情况。现在,点击下一步按钮。您首先设置单词,即 在索引 0 处显示单词,该单词已经显示并递增 迭代器,它将变为 1。现在再次单击下一步按钮,它会在索引 1 处显示 word 并将 iterator 递增到 2.
确保您的计数器即迭代器始终指向当前显示的当前单词索引。当点击next时,看到iterator+1在单词列表的范围内,如果是则增加它并显示该索引处的单词。同样,在显示前一个单词时,检查index-1是否在单词列表的范围内,如果是则将其递减,然后显示该索引处的单词。希望你明白。