2013-05-01 4 views
0

Я сделал простой checkbo [x демонстрационная программа в android, в которой я поставил chekbox и кнопку. Я хочу, чтобы при нажатии chekbox и нажатии кнопки тост, показывающий " я принимаю «else, когда кнопка нажата на тост, сгенерированный как« я не принимаю »... я сделал это, но проблема в том, что я снял флажок с chekbox .. он показывает тост напрямую (без нажатия кнопки);checkbox не работает должным образом в android

mainActivity.java

package com.example.chechboxdemo; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.CheckBox; 
import android.widget.CompoundButton; 
import android.widget.CompoundButton.OnCheckedChangeListener; 
import android.widget.Toast; 

public class MainActivity extends Activity { 
CheckBox c1; 
Button b; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     c1=(CheckBox)findViewById(R.id.checkBox1); 
     b=(Button)findViewById(R.id.button1); 
     c1.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton arg0, boolean arg1) { 
       // TODO Auto-generated method stub 

       if(c1.isChecked()){ 

        b.setOnClickListener(new OnClickListener() { 

         @Override 
         public void onClick(View arg0) { 
          // TODO Auto-generated method stub 
          Toast.makeText(getApplicationContext(), "i accept", 1).show(); 
         } 
        }); 
       } 
       else{ 
        Toast.makeText(getApplicationContext(), "i don't accept", 1).show(); 

       } 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 

} 
+0

Вы установили 'onClick' кнопки' b' внутри 'onCheckedChanged' из Checkbox, попробуйте поставить его вне – Pragnani

+0

И дайте мне знать, что вы пытаетесь достичь – Pragnani

ответ

1

Вы не должны использовать слушатель checkChanged, если вы не желая что-то произойдет, когда пользователь проверяет/неустановленный флажок. Так как вы хотите, действие произойдет только тогда, когда кнопка нажата требуется только ваш onClickListener и это должно быть вне вашего onCheckChangedListener

Попробуйте так:

public class MainActivity extends Activity { 
CheckBox c1; 
Button b; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     c1=(CheckBox)findViewById(R.id.checkBox1); 
     b=(Button)findViewById(R.id.button1); 
     c1.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton arg0, boolean arg1) { 
       // You don't need to use onCheckChangeListener. 
      } 
     }); 

     b.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       if(c1.isChecked()){ 
        Toast.makeText(getApplicationContext(), "i accept", 1).show(); 
       }else{ 
        Toast.makeText(getApplicationContext(), "i don't accept", 1).show(); 
       } 
      } 
     }); 
    }//end onCreate 
}//end MainActivity 
+0

Thanx босса .. .! есть nyc день .. :) – jigar

0

движение c1.isChecked() внутри кнопки Нажмите, чтобы проверить если CheckBox установлен или нет, нажмите кнопку «Click», а затем отобразите тост-сообщение в соответствии с состоянием CheckBox. изменить свой код, как:

b.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       if(c1.isChecked()){ //<<< check here if checkbox clicked or not 
        Toast.makeText(getApplicationContext(), 
              "i accept", 1).show(); 
       }else{ 
        Toast.makeText(getApplicationContext(), 
             "i don't accept", 1).show(); 
       } 
      } 
     }); 
Смежные вопросы