在android中单击按钮时如何在单词之间切换

在android中单击按钮时如何在单词之间切换,android,Android,我是android编程新手。我试图在点击按钮时在单词之间切换,但当我尝试这样做时,如果用户点击按钮,它只切换一个单词,而不会持续切换。任何建议都会有帮助 主激活代码: package com.example.helloworld; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import

我是android编程新手。我试图在点击按钮时在单词之间切换,但当我尝试这样做时,如果用户点击按钮,它只切换一个单词,而不会持续切换。任何建议都会有帮助

主激活代码:

package com.example.helloworld;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.view.View;
    import android.widget.TextView;
    
    import static com.example.helloworld.R.id.text123;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
        public void ONCLICK(View view) {
    
            TextView text2 = (TextView) findViewById(text123);
    
            text2.setText("Hello");
            if (text2.getText().equals("Hello")) {
                text2.setText("Hello!!!");
            } else {
                text2.setText("GoodBye!!");
            }
        }
    
       

这里有一个逻辑问题

text2.setText("Hello");
if (text2.getText().equals("Hello")) {
您正在将文本值设置为“Hello”,每次按钮单击时,甚至没有进入条件。这意味着您的文本值始终相同,并且不会改变

} else {
    text2.setText("GoodBye!!");
}
这就是为什么您没有到达else语句来更改文本值的原因

要解决这个问题,我们应该将更改文本值的语句移动到按钮单击之外。这样我们就可以允许我们的逻辑改变文本值

为此,我们可以使用布尔数据类型,它只返回true或false。让我来告诉你我们是如何使用它的

在您的活动中,我们将一个全局变量布尔值声明为false,它将正确跟踪文本中的值,并且仅当文本更改时才会更改

private Boolean toggleMyText = false
现在让我们参考一下
TextView
,只为它设置一次值,然后我们的逻辑就负责更改它的值

声明一个全局文本变量,就在布尔变量下面,如前所述:

private TextView text2;
在onCreate()中:

还要从导入中删除文本id的导入静态语句

import static com.example.helloworld.R.id.text123;
现在我们将click listener设置为按钮

您已经将click listener添加到布局本身的按钮中,其值为“onClick”。 因此,让我们在onCreate()之外的活动类中调用它

现在,让我们添加if-else逻辑语句

if (toggleMyText == true) {
    text2.setText("Hello!!!");
    toggleMyText = false;
} else {
    text2.setText("GoodBye!!");
    toggleMyText = true;
}
在上述声明中, 如果toggleMyText为true,我们将更改文本的值。我们还将布尔值更改为false


现在,下次单击时布尔值会更改,因此文本中的值也会更改。

根据您的代码,每次在条件之前将文本设置为“Hello”。因此,条件
text2.getText().equals(“Hello”)
总是
true
,每次都会得到“Hello!!!”。

文本在第一次单击后会变成“Hello!!!”吗?单击之前的文本是什么?我们是否在onCreate函数中添加text2.setOnClickListener(new View.OnClickListener())是的!在setText之后添加此项,因为您需要在将click listener设置为它之前找到它的id。
public void onClick(View view) {
    // Add if-else logic here
}
if (toggleMyText == true) {
    text2.setText("Hello!!!");
    toggleMyText = false;
} else {
    text2.setText("GoodBye!!");
    toggleMyText = true;
}