checkboxのクリックイベント

164 views
Skip to first unread message

ぶろろん

unread,
Sep 20, 2010, 7:34:31 AM9/20/10
to 日本Androidの会
はじめまして、ふろろんと言います。
最近勉強を始めたばかりなのですが、
以下のコードを書いてみましたが、onClickが発生していないようです。
画面は表示できているのでXMLは大丈夫だと思います。
初歩的な内容で申し訳ありませんが、ご教授いただけると助かります

package jp.test_check;

import android.app.Activity;
import android.os.Bundle;
import android.widget.*;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;

public class test_check extends Activity implements OnClickListener {
CheckBox chk01;
boolean chk01on;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
chk01 = (CheckBox)findViewById(R.id.checkbox001);
setContentView(R.layout.test_check);

}
public void onClick(View v) {
// TODO 自動生成されたメソッド・スタブ
if (v == chk01){
if(chk01.isChecked() == true) {
chk01.setText("Check ON!!");
} else {
chk01.setText("Check OFF!!");
}

}
}
}

ryota

unread,
Sep 20, 2010, 8:42:06 AM9/20/10
to android-g...@googlegroups.com
ふろろんさん

yama3と申します。
下記のソースコードでは、chk01 がチェックされたことをJavaプログラムは認識することができないため、
onClickイベントも発生しません。これを認識させるために、
chk01.setOnClickListener(this);
という1文をonCreateメソッド内のどこか適切な箇所に書いておけば解決するかと思います。

この書き方は2種類あり、上で紹介した書き方は
http://www.javadrive.jp/android/button/index4.html
に詳しく書かれています。(この例ではボタンで紹介していますが、チェックボックスも同じです)
またもう1種類の書き方は
http://www.javadrive.jp/android/button/index3.html
を参考にするといいでしょう。


2010年9月20日20:34 ぶろろん <fro...@gmail.com>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>

--
+----------------------------+
| 山田良太
| 1987...@gmail.com
| 080-5165-1281
| twitter: @1987yama3
+----------------------------+

Tetsuro Nakamura

unread,
Sep 20, 2010, 9:05:43 AM9/20/10
to android-g...@googlegroups.com
ふろろんさん

t2lowと申します。
yama3さんの指摘の他にもう一点あやしいところがあります。

>> chk01 = (CheckBox)findViewById(R.id.checkbox001);
>> setContentView(R.layout.test_check);

ここの順番は逆でないと、chk01がnullになってしまうと思います。
test_chekレイアウトの中から、checkbox001のチェックボックスを探さなければならないので。
chk01がnullだと、onClick()の最初の判定文ではじかれてしまいます。
setOnClickListener()を追加してもうまく動かなかったら、こちらも確認してみてください。

以上です。


2010年9月20日21:42 ryota <1987...@gmail.com>:

ふろろん

unread,
Sep 20, 2010, 9:38:45 AM9/20/10
to android-g...@googlegroups.com

夜子まま様、yama3様、t2low様

ご教授いただき、ありがとうございます。

        setContentView(R.layout.test_check);
        chk01 = (CheckBox)findViewById(R.id.checkbox001);
        chk01.setOnClickListener(this);

の形に修正して、動作が確認できました。
これで先に進めます。

Reply all
Reply to author
Forward
0 new messages