2 o casper ne O_Casper_ne 于 2013.08.02 13:39 提问

Checkboxes 让 toast 多次出现的问题

我在程序中设置了两个 checkboxes 和两个 EditText。点击一个 CheckBox 时 EditText 消失,然后显示Toast ,"Your Information is Saved",如何再次点击 CheckBox时,另一个Toast 会显示"Enter Your Email Address"。两个toast在每次点击后都可以正常运行。这是什么原因?

on.setOnClickListener(new View.OnClickListener() {
  public void onClick(View v) {
    if (((CheckBox) v).isChecked())
      receiverEmail.setVisibility(View.GONE);
    if (((CheckBox) v).isChecked())
      Toast.makeText(getApplicationContext(), 
      "Your Information is Saved", Toast.LENGTH_LONG).show();
    else
      receiverEmail.setVisibility(View.VISIBLE);
      Toast.makeText(getApplicationContext(), 
      "Enter Your Email Address", Toast.LENGTH_LONG).show();
  }
});

on2.setOnClickListener(new View.OnClickListener() {
  public void onClick(View v) {
    if (((CheckBox) v).isChecked())
      clientID.setVisibility(View.GONE);
    if (((CheckBox) v).isChecked())
      Toast.makeText(getApplicationContext(), 
      "Your Information is Saved", Toast.LENGTH_LONG).show();
    else
      clientID.setVisibility(View.VISIBLE);
      Toast.makeText(getApplicationContext(), 
      "Enter Your Email Address", Toast.LENGTH_LONG).show();
  }
});

3个回答

xuqili
xuqili   2013.08.02 14:34
已采纳
if (((CheckBox) v).isChecked()){
      Toast.makeText(getApplicationContext(), 
      "Your Information is Saved", Toast.LENGTH_LONG).show();
}
    else{
      receiverEmail.setVisibility(View.VISIBLE);
      Toast.makeText(getApplicationContext(), 
      "Enter Your Email Address", Toast.LENGTH_LONG).show();
}

if else 如果省略{}的话只会执行临近的一行代码,第二行是不会执行的,你的问题应该是因为else后执行一行代码receiverEmail.setVisibility(View.VISIBLE);,导致Toast.makeText(getApplicationContext(),
"Enter Your Email Address", Toast.LENGTH_LONG).show();无论如何都会执行的
楼主看下是不是因为这个。。。

wurenbi45
wurenbi45   2013.08.02 14:14

if{} else{} 之间的大括号呢?

cj6585256
cj6585256   2013.08.03 00:18

java基础问题 最好写代码的时候不要省略括号 一行也不要省略 这样能增加代码的可读性

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!