我想通过单击按钮来切换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的文本仅更改一次。
答案 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;
}
}
});