チェックボックス(コンポーネント)を使う

アンケートなどで必要になってくるチェックボタンの作成していきます。

 

チェックボタンの仕組みとしては、ほとんどトグルボタンと同じ工程となります。

checkbox

 

アンドロイドでは、

1、マウスクリックで切り替わる。

2、現在のトグルがどちらに切り替わっているかの取得。

の2点をチェックボックスが自動で行ってくれます。

 

作り方も簡単にできるようになっていますので、

この機会にチェックボタンの特性と組み込み方を覚えてしまいましょう。

 

作り方

 

最初にcButtonというプロジェクトを作成します。

作成が完了したら、main.xmlのファイルを開きます。

※main.xmlでは【graphical layout】で作業を行うと簡単にレイアウトの変更ができます。

TextViewクラスがデフォルトで中に配置されていると思いますが、削除をします。

 

次に、項目の中からCheckBoxをドラッグして、main.xmlの中にいれます。

今回のトグルボタンの確認の為にTextFiedクラスを新たに作成をして追加して、LinerLayoutの中にいれます。

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 >
 <CheckBox 
 android:text="CheckBox" 
 android:id="@+id/checkBox1" 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content"></CheckBox>
 <TextView 
 android:text="TextView" 
 android:id="@+id/textView1" 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content"></TextView>
</LinearLayout>

上記のようなmain.xmlになっているかと思います。もしidなどがなければ必要になりますので、追加をしておいてください。

 

ここで一度パブリッシュをしてみてください。

checkbox

 

パブリッシュされたアプリでボタンをクリックをすると、ONとOFFが切り替わるのが分かると思います。自動でトグル式のボタンが作成されました。

 

次にこの切り替えをスクリプトで利用してみましょう。

まず、最初に行うのは配置したオブジェクトを読み込む為の変数を用意します。

private CheckBox _checkbox;
private TextView _textView;

次にコンストラクタで、この変数にオブジェクトを読み込みます。

_checkbox = (CheckBox)findViewById(R.id.checkBox1);
_textView = (TextView)findViewById(R.id.textView1);

クリックイベントを取得する為には、CheckBox.OnCheckedChangeListenerをimplementsする必要があり、イベントをtoggleButtonに結びつける必要があります。

イベントが取得された際にonCheckedChangedが実行されますが、引数の値として、1つ目がそのクリックされたオブジェクト、2つ目が現在のCheckBoxのbooleanでの値になります。

package andante.in.android.cbox;

import android.app.Activity;
import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;

public class cBox extends Activity implements CheckBox.OnCheckedChangeListener{
 /** Called when the activity is first created. */
 
 private CheckBox _checkbox;
 private TextView _textView;
 
 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
 
 _checkbox = (CheckBox)findViewById(R.id.checkBox1);
 _textView = (TextView)findViewById(R.id.textView1);
 
 _checkbox.setOnCheckedChangeListener(this);
 }
 
 public void onCheckedChanged(CompoundButton _tbutton,boolean _checked){
 if(_checked){
 _textView.setText("これはON");
 }else{
 _textView.setText("これはOFF");
 }
 }
}

上記をパブリッシュすると、トグルスイッチの外部にある、TextViewの中の値も現在のオフの値かどうかによって、変化するはずです。

 

またボタンには下記の処理が含まれている。

 

値をセットする。

_btn.setChecked(true);

スイッチを切り替える。

_btn.toggle();

オンオフの取得

_btn.isChecked()

前後の記事

前の記事:

次の記事:

関連の記事

コメント

:D cork

いつもお世話になってます。
setOnCheckedChangeListenerがエラーしてたからクイックフィックスで
import android.widget.CompoundButton.OnCheckedChangeListener;
を入れてみたら直った。
なぜか(R.id.textView1)がエラーしてR.javaに定数が入らないなんで><;

:D admin

eclipseのmenuのproject->cleanをすると、直ったりします。Rが反応しなくなるときに良くあるのは、xmlの中に記述間違えがいたりする時だったりします。もしくはPackage Explorerでアプリの上で右クリックでrefreshが出るかと思うので、Refreshをすると直ったりします。

:D cork

xmlが間違ってました!!的確なアドバイスありがとうございます^^

コメントの投稿

  • サイト内検索

新作アプリの紹介

関連サイトの紹介

アンドロイドアプリ開発TIPS
きぐるみカメラ
ふらいぱん
アンドロイドのデザイン集
Page top↑