Android中的复选框 - >运行错误

时间:2014-04-13 18:18:59

标签: android xml checkbox

我正在尝试使用3个复选框和1个按钮创建一个简单的应用程序。我想为每个复选框制作一个toast以查看它是否被选中(单击监听器),然后为按钮实现一个单击监听器发布一般消息以查看是否选中了复选框。

如果我只使用简单的按钮将代码放在我的手机上(Android版本4.1.1),但是如果我实现这3个checkboxex,它会崩溃(我收到一条通知,例如“你的应用停止运行,点击强行关闭)。

我的xml:

<?xml version="1.0" encoding="UTF-8"?> 
<LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
     android:gravity="center"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
>
    <Checkbox
         android:id= "@+id/ok_checkbox"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:text="@string/ok_read"
    />
    <Checkbox
         android:id= "@+id/removed_checkbox"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:text="@string/misspelled"
    />
    <Checkbox
         android:id= "@+id/changed_checkbox"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:text="@string/changed_read"
    />    
   <Button
         android:id= "@+id/final_click"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="@string/final_click" 
    />

  </LinearLayout>

活动:

package com.flowerPower.SpellingTest;

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

public class SecondActivity extends Activity {

    private Button finalB;
    private CheckBox ok, changed, removed;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.second);

        finalB = (Button) findViewById(R.id.final_click);
        ok = (CheckBox) findViewById(R.id.ok_checkbox);
        changed = (CheckBox) findViewById(R.id.changed_checkbox);
        removed = (CheckBox) findViewById(R.id.removed_checkbox);

        ok.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

                if (((CheckBox) v).isChecked()) {
                    Toast.makeText(SecondActivity.this, "Your choice is OK",
                            Toast.LENGTH_LONG).show();
                }
            }
        });
        changed.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (((CheckBox) v).isChecked()) {
                    Toast.makeText(SecondActivity.this, "Your choice is changed",
                            Toast.LENGTH_LONG).show();
                }
            }
        });
        removed.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (((CheckBox) v).isChecked()) {
                    Toast.makeText(SecondActivity.this, "Your choice is Windows",
                            Toast.LENGTH_LONG).show();
                }
            }

        });

    }

 }

我该怎么办?

1 个答案:

答案 0 :(得分:0)

对于复选框,请像这样使用setOnCheckedChangeListener() -

        ok.setOnCheckedChangeListener(new OnCheckedChangeListener() 
        {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
            {
                if(isChecked)
                {
                    Toast.makeText(SecondActivity.this, "Your choice is OK",
                            Toast.LENGTH_LONG).show();
                }
            }
        });

和其他复选框类似。