【问题标题】:saving state of radio buttons while selection in android在android中选择时保存单选按钮的状态
【发布时间】:2015-06-22 22:39:38
【问题描述】:

我正在处理我的活动有 2 个单选按钮的应用程序。

  • 4 通道
  • 9 频道

a - 屏幕的默认选择是 4 通道单选按钮。

b - 如果用户想点击 (9channel) 按钮,它会打开一个对话框提示用户

"如果您移动,所有保存的项目将被删除"

c - 在对话框中我有“是”和“否”按钮。如果您单击“是”按钮,则会移动到 9 通道单选按钮选择。

我要解决的问题是:

1 - 当用户点击对话框上的“否”按钮时,我退出了对话框。 但是单选按钮的选择仍然移动到(9channel)单选按钮 如果用户在对话框中单击“否”,如何保留旧的选择。

2 - 活动上的默认选择是(4 频道)单选按钮。 如果用户单击相同的选定按钮,我不想打开对话框。
只有当我单击另一个单选按钮时,该对话框才会打开。

我怎样才能实现上述两种情况。

我的代码:

rg = (RadioGroup) findViewById(R.id.radioGroup1);
public void addListenerOnButton() 
{

   OnClickListener listener = new OnClickListener() {
        @Override
        public void onClick(View v) {
               RadioButton rb = (RadioButton) v;
               selection = (String) rb.getText();

                   mFlag = true;
                   showDialog(SELECTION_ALERT_ID);

        }
    };

    RadioButton rb1 = (RadioButton) findViewById(R.id.radioButton1);
    rb1.setOnClickListener(listener);
    RadioButton rb2 = (RadioButton) findViewById(R.id.radioButton2);
    rb2.setOnClickListener(listener);
} 

【问题讨论】:

    标签: java android radio-button radio-group


    【解决方案1】:
    AlertDialog.Builder builder = new AlertDialog.Builder(ca);
                builder.setTitle("Final Cropped Image");
                builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                      public void onClick(DialogInterface dialog, int id) {
    
            //check 9chanel
    
    }
       });
               builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
    
                                // check 4chanell
    
                            }
                        });
                AlertDialog dialog = builder.create();
                dialog.show();
    

    【讨论】:

    • ..你能告诉我如何将4通道单选按钮的视图/ id 放入对话框否定方法()
    • //---RadioButton--- RadioGroup radioGroup = (RadioGroup) findViewById(R.id.rdbGp1); radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(RadioGroup group, int checkedId) { RadioButton rb1 = (RadioButton) findViewById(R.id.rdb1); if (rb1.isChecked()) { Toast.makeText(getBaseContext( ), "选项 1 已检查!", Toast.LENGTH_LONG).show(); } else { Toast.makeText(getBaseContext(), "选项 2 已检查!", Toast.LENGTH_LONG).show(); } } }); }
    • 处理单选按钮的简单示例
    【解决方案2】:

    问题不在您显示的代码中。在您描述的场景中,您的应用聚焦在对话框中,因此您必须控制对话框上的操作

    首先,如果按下rb1,你不想做任何动作,所以删除这一行:

    rb1.setOnClickListener(listener);
    

    之后,您的对话框代码不会显示,所以我向您展示我通常这样做的方式,并进行一些修改以满足您的需求:

    AlertDialog dialog = new AlertDialog.Builder(this)
                // set's the message to the dialog
                .setMessage("if you move, all saved items will be deleted")
                // accept button
                .setPositiveButton(android.R.string.ok, new OnClickListener() {
    
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                          dialog.dismiss();
                          // select the 9channel and do the actions
                    }
                })
                // cancel button
                .setNegativeButton(android.R.string.cancel, new OnClickListener() {
    
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                          dialog.dismiss();
                    }
                // dismiss action (if back button is pressed, same as cancel)
                }).setOnCancelListener(new OnCancelListener() {
    
                    @Override
                    public void onCancel(DialogInterface dialog) {
                          dialog.dismiss();
                    }
                }).create();
    
        dialog.show();
    
    }
    

    【讨论】:

    • 卡斯特拉我试过你的代码。但我仍然面临问题 1 和 2。我真的无法理解如何解决它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    相关资源
    最近更新 更多