1

如何在使用AlertDialog时获取TextView 中复选框的状态

我仍然试图显示CheckBox 的 Checked 状态,但没有得到任何值,无论是 True 还是 False。

请看下面的截图

在此处输入图像描述

UploadActivity.java 代码:

TextView tv1;
CheckBox chkIos;

   @Override
    public Dialog onCreateDialog(int id) {

        AlertDialog dialogDetails = null;
        switch (id) {
        case DIALOG_LOGIN:
            LayoutInflater inflater = LayoutInflater.from(this);
            View dialogview = inflater.inflate(R.layout.dialog_layout, null);
            AlertDialog.Builder dialogbuilder = new AlertDialog.Builder(this);
            dialogbuilder.setTitle("Image Information");
            dialogbuilder.setView(dialogview);
            dialogDetails = dialogbuilder.create();                 
            break;  
        }
        return dialogDetails;
    }

    @Override
    public void onPrepareDialog(int id, Dialog dialog) {
        switch (id) {
        case DIALOG_LOGIN:
        final AlertDialog alertDialog = (AlertDialog) dialog;
            Button loginbutton = (Button) alertDialog
                    .findViewById(R.id.btn_login);
            Button cancelbutton = (Button) alertDialog
                    .findViewById(R.id.btn_cancel);
            tv1 = (TextView) alertDialog
                    .findViewById(R.id.textView1);
            chkIos = (CheckBox) alertDialog
                    .findViewById(R.id.chkOption1);


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

                private boolean SaveData() {                        

                    .............               
                    }
                    return true;
                }

                private String getHttpPost(String url,
                        List<NameValuePair> params) {

                    .............
                    }
                    return str.toString();
                }

            });

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

                    ...........
                }
            });          
        }
    }

public void addListenerOnButton() {                 
    chkIos.setOnClickListener(new OnClickListener() {

    @Override
     public void onClick(View v) {

        if (((CheckBox) v).isChecked()) 
            tv1.setText("True");
                else
            tv1.setText("False");
                }
            });
        }
4

4 回答 4

2

当您单击登录时,您正在设置 onclickListener。

移动:addListenerOnButton();在loginButton外的onClick

于 2013-07-15T08:35:20.027 回答
2

是的,我同意@kumar 只需在此行之后粘贴 kumar 的代码:

 chkIos = (CheckBox) alertDialog.findViewById(R.id.chkOption1);

并删除这个addListenerOnButton(),你就完成了.. :)

于 2013-07-15T09:43:03.920 回答
1
chekBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // TODO Auto-generated method stub
                if(isChecked==true){
                    status.setText("true");

                    }
                }else if(isChecked==false){
                    status.setText("false");
                }
            }
        });

在此行下方编辑

chkIos = (CheckBox) alertDialog.findViewById(R.id.chkOption1);

使用我的代码也删除

addListenerOnButton()

这个功能它肯定会工作。谢谢。

于 2013-07-15T09:13:06.790 回答
0

尝试实现复选框,setOnCheckedChangeListener我认为它会做

            CheckBox cb = (CheckBox) findViewById(R.id.CheckBox01);
            cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {

                public void onCheckedChanged(CompoundButton buttonView,
                        boolean isChecked) {
                     // TODO Auto-generated method stub
                     if (buttonView.isChecked()) {
                        //set textview value here as checked

                    }
                     else
                    {
                     //set textview value here as unchecked
                    }

                }
              });
于 2013-07-15T08:41:33.487 回答