【问题标题】:How to remove "OK" button from Dialog fragment in Android如何从Android中的对话框片段中删除“确定”按钮
【发布时间】:2015-11-24 03:39:44
【问题描述】:

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

对话框片段

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();
 }
}

代码工作正常,我只想获得选定的项目而无需单击“确定”按钮。它节省了用户的时间。

【问题讨论】:

  • 为了让回答者或其他有类似问题的人更容易,请edit 添加一个特定的问题陈述——可以假设“它不起作用”,但是如何 i> 不行吗?特征是什么错误消息或不正确的行为?
  • 感谢@Nathan Tuggy,代码运行良好。我只想获得选定的项目(被选中时),而无需单击“确定”按钮来执行操作。

标签: android-dialogfragment onitemselectedlistener


【解决方案1】:

我不确定这是否是 Android 推荐的执行此操作的方法,但我终于找到了实现我想要的确切行为的方法。

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();
 }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多