如何在Android中的警报对话框中添加多选复选框?

时间:2013-04-17 10:07:44

标签: java android radio-button checkbox android-alertdialog

我在Android应用中创建了菜单“Sync”。当我们点击“同步”警报时,打开一个4复选框布局。我想要的是让它们在功能上就像我点击15分钟然后其他选项自动未点击一样。

@Override
public boolean onCreateOptionsMenu(Menu menu) 
{
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.action_menu, menu);
    return true;
}       
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
    switch (item.getItemId())
    {
        case R.id.menu_settings:
            alertDialog = new AlertDialog.Builder(HomePage.this).create(); //Read Update
            LayoutInflater adbInflater = this.getLayoutInflater();
            View checkboxLayout = adbInflater.inflate(R.layout.sync_layout, null);
            defaultchkbox = (CheckBox)checkboxLayout.findViewById(R.id.defaultchkbox);
            after15mint = (CheckBox)checkboxLayout.findViewById(R.id.after15mint);
            after30mint = (CheckBox)checkboxLayout.findViewById(R.id.after30mint);
            after45mint = (CheckBox)checkboxLayout.findViewById(R.id.after45mint);
            alertDialog.setView(checkboxLayout);
            alertDialog.setTitle("Synchronization");
            alertDialog.setMessage("Choose");

            alertDialog.setButton(Dialog.BUTTON_POSITIVE,"Save changes", new DialogInterface.OnClickListener()
            {
                @Override
                public void onClick(DialogInterface dialog, int which)
                {
                    // TODO Auto-generated method stub
                    boolean checkBoxResult = false; 
                        if(after15mint.isChecked())
                        {
                            Toast.makeText(getApplicationContext(), "15 Minute checked", Toast.LENGTH_LONG).show();
                            checkBoxResult = true;
                        }
                        else if(after30mint.isChecked())
                        {
                            Toast.makeText(getApplicationContext(), "30 Minute checked", Toast.LENGTH_LONG).show();
                            checkBoxResult = true;
                        }
                        else if(after45mint.isChecked())
                        {
                            Toast.makeText(getApplicationContext(), "45 Minute checked", Toast.LENGTH_LONG).show();
                            checkBoxResult = true;
                        }   
                        else{
                            Toast.makeText(getApplicationContext(),     "Default", Toast.LENGTH_LONG).show();
                        }
                }
            });
            alertDialog.setButton(Dialog.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener()
            {
                public void onClick(DialogInterface dialog, int which) 
                {
                    alertDialog.dismiss();
                }
            });
            alertDialog.show(); 
            return true;
default:
            return super.onOptionsItemSelected(item);
    }
}

但我对警报中的复选框工作有点困惑。建议会很有帮助。谢谢。 :)enter image description here

3 个答案:

答案 0 :(得分:3)

看起来您需要使用嵌套在RadioGroup中的Radio Buttons。然后它只允许您一次选择一个选项。

有关RadioGroup的更多信息,请查看: http://developer.android.com/reference/android/widget/RadioGroup.html

有关创建单选按钮的更多信息,请参阅:

http://developer.android.com/reference/android/widget/RadioButton.html

特别是对于您的代码,您必须在R.layout.sync_layout中的RadioGroup中定义RadioButtons,例如

<RadioGroup
    android:id="@+id/syncGroup"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <RadioButton
        android:id="@+id/defualt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text= "Default" 
        android:checked="true" />

    <RadioButton
        android:id="@+id/minute15"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text= "15 Minute" />


     <RadioButton
         android:id="@+id/minute30"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text= "30 Minute" />


      <RadioButton
          android:id="@+id/minute45"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text= "45 Minute" />



</RadioGroup>

答案 1 :(得分:2)

请参阅this链接。

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle(R.string.pick_color);
           .setItems(R.array.colors_array, new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int which) {
               // The 'which' argument contains the index position
               // of the selected item
           }
    });
    return builder.create();
}

答案 2 :(得分:-1)

我使用http://www.youtube.com/watch?v=Df129IGl31I此链接尝试了使用共享偏好设置的单选按钮,我希望这可能会对您有所帮助。感谢