G Y U L O G

Button button = (Button) findViewById(R.id.button_send);
button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        // Do something in response to button click
    }
});

버튼을 누르면 plainText에서 값을 받아와 어디론가 보내는 기능을 만들어보려고했다. Android Docs를 보니 setOnClickListener를 활용해서 하면 되겠다는 느낌이 들었다.

 

빨간줄이 뜨길래 봤더니 override를 해줘야 했다.

button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            
            }
        });

getText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                CharSequence str = null;
                str = plaintext.getText();
                Toast.makeText(getApplicationContext(), str,Toast.LENGTH_LONG).show();
            }
        });

java에서 익혔던 대로 String 타입으로 값을 받으려했더니 Android가 오류를 내뿜으면서 앱을 강제 종료 시켰다.

 

권고 사항대로 CharSequence로 보냈더니 무사히 처리됐다. 테스트를 위해 Toast를 이용했다.


이제 이 Button의 onClick 행동을 CheckBox가 추가 되도록 만들어야한다.

LinearLayout layout = (LinearLayout)findViewById(R.id.ll);
        CheckBox cb = new CheckBox(this);


        getText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                CharSequence str = null;
                str = plaintext.getText();
                Toast.makeText(getApplicationContext(), str,Toast.LENGTH_LONG).show();
                cb.setText(str);
                cb.setChecked(false);
                layout.addView(cb);
            }
        });

이렇게 만드니 첫번째로 작동하는 onClick 이벤트는 성공했다. 그러나 이어서 체크박스를 생성하려 할때

The specified child already has a parent. You must call removeView() on the child's parent first.

이런 오류 메시지가 나왔다.

 

체크박스뷰가 하나의 부모뷰만 참조해야하는데 내가 두번째로 호출한 순간 두개의 부모뷰를 참조하게 되면서 생기는 오류다...

 

이건 내일 생각해보도록 하자.

 

"댓글, 공감 버튼 한 번씩 누르고 가주시면 큰 힘이 됩니다"

공유하기

facebook twitter kakaoTalk kakaostory naver band