如何删除“确定"对话框片段中的按钮 [英] How to remove "OK" button from Dialog fragment in Android

查看:89
本文介绍了如何删除“确定"对话框片段中的按钮的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试完全删除确定"按钮,以便在选择项目时自动单击它.我注意到这是Android的首选方式.我不需要取消"按钮,因为我想防止选择空值.

I'm trying to remove the OK button completely so that an item is automatically clicked when selected. I noticed that this is Android's preferred way of doing it. I don't need a "cancel" button because I want to prevent null selected.

对话框片段

public class SingleChoiceClass extends 
DialogFragment {`

final CharSequence[] items = {"b1", "b2", "b3", "b4"};
String selection;
@NonNull
@Override


public Dialog onCreateDialog(Bundle savedInstanceState) {

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());`


builder.setTitle("Choose").setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface arg0, int arg1) {
    switch (arg1){
        case 0:
            selection = (String) items[arg1];
            break;
        case 1:
            selection = (String) items[arg1];
            break;
        case 2:
            selection = (String) items[arg1];
            break;
        case 3:
            selection = (String) items[arg1];
            break;

            }

    }
}).setPositiveButton("OK", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {


        // Display toast with the user's selection
        Toast.makeText(getActivity(), "Your choice is : " + selection, Toast.LENGTH_SHORT).show();

        }
    });
    return builder.create();
 }
}

代码按原样工作正常,我只想获取选定的项目,而不必单击确定"按钮.这样可以节省用户的时间.

The code works fine as it is, I just want to get selected item without having to click "OK" button. It saves user's time.

推荐答案

我不确定这是否是Android推荐的方法,但是我终于想出了一种实现我想要的确切行为的方法.

I'm not sure if this is the Android recommended way of doing this but I finally figured out a way of achieving the exact behavior I want.

public class SingleChoiceClass extends 
DialogFragment {

final CharSequence[] items = {"b1", "b2", "b3", "b4"};
String selection;
@NonNull
@Override

public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
final MainActivity activity = (MainActivity) getActivity();

builder.setTitle("Choose")
    .setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
switch (arg1){
    case 0:
        selection = (String) items[arg1];
        Toast.makeText(getActivity(), "" + selection,Toast.LENGTH_SHORT).show();
        // Do your magic
        dismiss();
        break;
    case 1:
        selection = (String) items[arg1];
        Toast.makeText(getActivity(), "" + selection,Toast.LENGTH_SHORT).show();
        // Do your magic
        dismiss();
        break;
    case 2:
        selection = (String) items[arg1];
        Toast.makeText(getActivity(), "" + selection,Toast.LENGTH_SHORT).show();
        // Do your magic
        dismiss();
        break;
    case 3:
        selection = (String) items[arg1];
        Toast.makeText(getActivity(), "" + selection,Toast.LENGTH_SHORT).show();
        // Do your magic
        dismiss();
        break;
        }
}
}).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {

        //Exit
        activity.finish(); //Or find a way to relaunch Dialog
    }
});
return builder.create();
 }
}

这篇关于如何删除“确定"对话框片段中的按钮的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆