【问题标题】:dynamically selecting radiobutton view inside activity动态选择活动内的单选按钮视图
【发布时间】:2015-07-15 04:55:05
【问题描述】:

我正在开发一个应用程序,其中我的活动有 2 个单选按钮。

  • 4 通道

  • 9 频道

现在:

  1. 屏幕的默认选择是 4 通道单选按钮。

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

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

  1. 在对话框中我有“是”和“否”按钮。如果您单击“是”按钮,它将选择 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 android-radiogroup


    【解决方案1】:

    对于 1,在您的对话框按钮侦听器中,执行以下操作:

    首先,将您的单选按钮移动到全局变量,并将以下侦听器添加到您的对话框弹出窗口中。

    然后,为否定按钮更新监听器:

    .setNegativeButton(getString(R.string.alert_dialog_negative_text),
          new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                 //not checked, but according to api, should be this method
                rb1.setSelected(true);
            }
     });
    

    对于 2,您可以检查您的侦听器代码,如果选中了单击的单选按钮,则不要显示对话框。

    但我个人建议使用OnCheckedChangeListener作为单选按钮,参考这个问题:radio button listener

    【讨论】:

      【解决方案2】:

      在您的代码中为“否定”选项制作代码:

      new AlertDialog.Builder(this)
                          .setTitle("Hello!")
                          .setMessage("Choose your RadioButton:")
                          .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                              public void onClick(DialogInterface dialog, int which) { 
                                  rb1.setChecked(true);
                                  rb2.setChecked(false);                                
                              }
                          })
                          .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
                              public void onClick(DialogInterface dialog, int which) {
                                  rb1.setChecked(false);
                                  rb2.setChecked(true);
                              }
                          })
                          .setIcon(android.R.drawable.ic_dialog_alert)
                          .show();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-14
        • 1970-01-01
        • 1970-01-01
        • 2018-01-31
        • 1970-01-01
        • 1970-01-01
        • 2019-08-11
        • 2012-12-20
        相关资源
        最近更新 更多