2013-05-01 2 views
0

나는 chekbox와 button을 넣은 간단한 checkbo [x demo program을 안드로이드로 만들었습니다. Chekbox를 눌렀을 때 버튼을 눌렀을 때 " 나는 받아 들인다 "다른 사람은 단추가 눌러 진 축배를"나는 받아 들인다 "생성했다 ... 나는 그것을 만들었다 그러나 문제는 나가 chekbox ...의 체크를 해제 할 때이다 직접 단추를 누르기없이 축배를 보여준다;체크 박스가 안드로이드에서 제대로 작동하지 않습니다

당신은 사용자 검사/확인란을 선택하거나 선택 취소합니다 때 일이 무엇인가를 원하는 경우를 제외하고 checkChanged 수신기를 사용하지 않아야

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

, 외부 – Pragnani

+0

를 배치하려고 그리고 내가 당신이 – Pragnani

답변

1

mainActivity.java. 당신은 액션이 버튼은 단지 당신의 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

고맙습니다 보스를 달성하기 위해 노력하고있다 알려주세요 .. .! 뉴욕의 날이 .. :) – jigar

0

이동 c1.isChecked()를 버튼 내부 확인을 클릭 CheckBox가 선택되었는지 여부를 확인하고 버튼을 클릭하면 CheckBox 상태에 따라 토스트 메시지가 표시됩니다. 귀하의 코드를 변경 : 당신은 체크 박스의 내부에`onCheckedChanged` b` 버튼의`onClick`을`설정 한

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(); 
       } 
      } 
     }); 
관련 문제