Работа с CheckBox в приложении

| 17.02.2015

CheckBox — очень простой виджет, имеющий всего два состояния/значения: установлен/не установлен. Создадим простое приложение, где попробуем получать значение данного виджета с помощью слушателя OnClickListener, а также в любой нужный момент при клике по отдельной кнопке Button.

Работа с CheckBox в приложении

1. Добавим строковые ресурсы res/values/strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">CheckboxExample</string>    
    <string name="send_notification">Send notification</string>
    <string name="get_value">Get value</string>
</resources>

2. Создадим layout с нужными нам элементами res/layout/activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <CheckBox
        android:id="@+id/chkBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/send_notification" />

    <Button
        android:id="@+id/btn"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:text="@string/get_value"
        android:onClick="getValue"/>

</LinearLayout>

Для кнопки добавим название метода-обработчика клика — getValue().

Добавьте значения отступов в res/values/dimens.xml

<resources>
    <!-- Default screen margins, per the Android Design guidelines. -->
    <dimen name="activity_horizontal_margin">16dp</dimen>
    <dimen name="activity_vertical_margin">16dp</dimen>
</resources>

3. Создадим класс Активити — MainActivity.java

package ru.androiddocs.checkboxexample;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {

    private CheckBox mCheckBox;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mCheckBox = (CheckBox) findViewById(R.id.chkBox);
        
        mCheckBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (((CheckBox) v).isChecked()) {
                    Toast.makeText(getApplicationContext(), "Checked", 
                            Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(getApplicationContext(), "Not checked",
                            Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

    public void getValue(View v) {
        if (mCheckBox.isChecked()) {
            Toast.makeText(getApplicationContext(), "Checked", 
                    Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(getApplicationContext(), "Not checked",
                    Toast.LENGTH_SHORT).show();
        }
    }
}

Как видно из кода в методе onCreate() мы добавляем слушателя для нашего чекбокса. При клике мы получаем элемент View, приводим его к нужно типу и делаем проверку методом isChecked():

((CheckBox) v).isChecked()

Далее выводим соответствующее сообщение с помощью Toast.

Код метода getValue() очень похож на тот, что в обработке клика. Единственное, тут мы не делаем приведение типа, а напрямую обращаемся к нашему чекбоксу.

Запускаем приложение и тестируем.

Работа с CheckBox в приложении

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*