반응형
안드로이드 체크박스를 이용하여 액티비티간 값 전달하기
필요한 코드만 적어서 이대로 실행하면 에러가 나므로 알맞게 수정이 필요함
check.xml 에 체크박스 선언
1 2 3 4 5 | <CheckBox android:id= "@+id/option1" android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:textSize= "15sp" /> |
1 |
1 2 3 4 5 | <CheckBox android:id= "@+id/option2" android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:textSize= "15sp" /> |
CheckActivity.java 에서 체크했을 때 동작 코드 추가
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | <p> public class CheckActivity implements OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); // 액티비티 생성 setContentView(R.layout.check); // check.xml //버튼 선언 Button button=(Button)findViewById(R.id.button_result); button.setOnClickListener( this ); // option1 체크박스가 눌렸을 때 findViewById(R.id.option1).setOnClickListener( new Button.OnClickListener() { public void onClick(View v) { Checked(v); // 체크되었을 때 동작코드 } }); // option2 체크박스가 눌렸을 때 findViewById(R.id.option2).setOnClickListener( new Button.OnClickListener() { public void onClick(View v) { Checked(v); // 체크되었을 때 동작코드 } }); } public String Checked(View v) { // 체크되었을 때 동작할 메소드 구현 // TODO Auto-generated method stub CheckBox option1 = (CheckBox) findViewById(R.id.option1); // option1체크박스 // 선언 CheckBox option2 = (CheckBox) findViewById(R.id.option2); // option1체크박스 // 선언 String resultText = "" ; // 체크되었을 때 값을 저장할 스트링 값 if (option1.isChecked()) { // option1 이 체크되었다면 resultText = "option1" ; } if (option2.isChecked()) { resultText = "option2" ; // option2 이 체크되었다면 } return resultText; // 체크된 값 리턴 } @Override public void onClick(View v) { if (v.getId() == R.id.button_result) { //button_result 이라는 버튼이 생성되었다고 가정. Intent it = new Intent( this , MainActivity. class ); // MainActivity.java로 보내기 위한 인텐트 선언 it.putExtra( "it_check" , Checked(v)); // it_check 라는 이름하에 체크된 값을 전달 startActivity(it); // MainActivity.java를 실행하면서 값을 전달 } } } </p> |
MainActivity.java에서 값 전달 받기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <p> public class MainActivity { @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); //액티비티 생성 setContentView(R.layout.main); //main.xml Intent it=getIntent(); //인텐트 받기 선언 //이전에 보냈던 it_check의 값을 받아 str에 저장 String str= it.getStringExtra( "it_check" ); //즉 str = "option1" 또는 "option2" 가 들어있음 //이 값을 이용하여 필요한 동작 구현 if (str.equals( "option1" ){ //str 값이 option1 이라면 //필요한 동작 코드 작성 } else if (str.equals( "option2" ){ //str 값이 option2 라면 //필요한 동작 코드 작성 } } } </p> |
동작 순서는 check.xml -> CheckActivity.java -> MainActivity.java 이렇게 된다
출처 : http://yonoo88.tistory.com/624
안드로이드 : 체크박스 CheckBox 예제2
OnCheckedChangeListener 사용
직전의 예제에선 버튼을 눌러야 CheckBox 의 텍스트를 표시했는데, 이번에는 체크박스 자체를 클릭했을때 이벤트 리스너를 만들어 구현해봅니다.
1. MainActivity 는 implements OnCheckedChangeListener 합니다
2. onCheckedChanged() 를 @Override 하여 구현합니다
3. setOnCheckedChangeListener(this) 하여 그 자신을 리스너로 등록합니다
[activity_main.xml]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="좋아하는 과목을 고르세요" android:textAppearance="?android:attr/textAppearanceLarge" /> <CheckBox android:id="@+id/checkBox1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="수학" /> <CheckBox android:id="@+id/checkBox2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="과학" /> <CheckBox android:id="@+id/checkBox3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="체육" /> <CheckBox android:id="@+id/checkBox4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="역사" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="결과창" android:textAppearance="?android:attr/textAppearanceLarge" /> </LinearLayout> | cs |
[MainActivity.java]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | public class MainActivity extends ActionBarActivity implements CompoundButton.OnCheckedChangeListener { private TextView tv; private CheckBox cb1; private CheckBox cb2; private CheckBox cb3; private CheckBox cb4; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); cb1 = (CheckBox)findViewById(R.id.checkBox1); cb2 = (CheckBox)findViewById(R.id.checkBox2); cb3 = (CheckBox)findViewById(R.id.checkBox3); cb4 = (CheckBox)findViewById(R.id.checkBox4); tv = (TextView)findViewById(R.id.textView2); cb1.setOnCheckedChangeListener(this); cb2.setOnCheckedChangeListener(this); cb3.setOnCheckedChangeListener(this); cb4.setOnCheckedChangeListener(this); } @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // 체크박스를 클릭해서 상태가 바꾸었을 경우 호출되는 콜백 메서드 String result = ""; // 문자열 초기화는 빈문자열로 하자 // if(isChecked) tv.setText("체크했음"); // else tv.setText("체크안했슴"); // 혹은 3항연산자 //tx.setText(isChecked?"체크했슴":"체크안했뜸"); if(cb1.isChecked()) result += cb1.getText().toString() + ", "; if(cb2.isChecked()) result += cb2.getText().toString() + ". "; if(cb3.isChecked()) result += cb3.getText().toString() + ". "; if(cb4.isChecked()) result += cb4.getText().toString() + ". "; tv.setText("체크항목: " + result); } } | cs |
[실행화면]
출처 : http://bitsoul.tistory.com/46
반응형
'IT > 안드로이드+JAVA' 카테고리의 다른 글
[안드로이드] EditText 문자열, 정수값, 더블값 가져오기 (정리) (0) | 2016.04.19 |
---|---|
[안드로이드] keytool, debug.keystore 위치 (정리) (0) | 2016.04.18 |
[안드로이드] 자동로그인 Preference (펌) (1) | 2016.04.15 |
[안드로이드] 내부메모리(Internal Storage)에 Data 저장하기 (펌) (0) | 2016.04.15 |
[안드로이드] 화면 터치시 키보드 숨기기, 키보드 자동 실행 막기 예제 (정리) (0) | 2016.04.14 |