IT/안드로이드+JAVA

[안드로이드] 체크박스값 전달하기 (펌)

안경 쓴 귀니 2016. 4. 15. 17:40
반응형

안드로이드 체크박스를 이용하여 액티비티간 값 전달하기


필요한 코드만 적어서 이대로 실행하면 에러가 나므로 알맞게 수정이 필요함


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

반응형