在按钮上单击我要切换TextView的文本

时间:2019-07-25 14:35:13

标签: java android

我想通过单击按钮来切换textview文本。我已将标志设置为公共变量,并在onclick函数中对其进行了更改,但是出于某些原因,标志的值仍被初始化为其默认值。我是android studio的初学者 谢谢。

public class MainActivity extends AppCompatActivity {
public Button bt1;
public TextView txt;
public boolean flag;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    bt1=(Button) findViewById(R.id.button);
    txt=(TextView) findViewById(R.id.textView2);


    bt1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(flag){
                flag=false;
                txt.setText("Steve");
            }
            else {
                txt.setText("Shetty");
                flag=true;
            }

        }
    });

 }
 }

我希望每次单击按钮时都切换Textview的文本,但textview的文本仅更改一次。

2 个答案:

答案 0 :(得分:0)

flag始终为true,并且文本始终设置为“ Steve”

flag=true;
if(flag=true){
flag=false;
txt.setText("Steve");
}
else {
txt.setText("Shetty");
flag=true;
}

尝试使用true初始化flag并删除onClickListener中的flag = true部分

flag = true;
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

if(flag=true){
flag=false;
txt.setText("Steve");
}
else {
txt.setText("Shetty");
flag=true;
}

}
});

答案 1 :(得分:0)

那是因为您在本地范围内定义了变量“ flag”。这意味着,当您修改flag变量并退出本地范围(退出onClick方法)时,flag变量不再存在。因此,您所做的更改不会在下次使用onClick方法时反映出来。 (您还在开始时就设置了变量的值,因此,当然,if语句的计算结果始终为True。)要解决此问题,请在可访问onClick()方法之外定义flag变量。

boolean flag;

bt1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if(flag){
            flag=false;
            txt.setText("Steve");
        }
        else {
            txt.setText("Shetty");
            flag=true;
        }

    }
});