防止包含列表的对话框在选择时关闭

Sco*_*son 3 android android-dialog android-dialogfragment

我有一个包含项目列表的对话框片段。默认情况下,当您触摸某个项目时,对话框会关闭。此时如何防止解雇?(我想在稍后阶段以编程方式关闭对话框)

我正在按照此处的指示关注代码示例:https : //developer.android.com/guide/topics/ui/dialogs.html

@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) {
           }
    });
    return builder.create();
}
Run Code Online (Sandbox Code Playgroud)

我看到有一个选项可以使用builder.setSingleChoiceItems而不是builder.setItems(),这会给我我想要的行为,但不是风格。(它带有单选按钮,我不想要)

Mul*_*lti 5

ListView在创建对话框之后设置一个监听器,如下所示:

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    final AlertDialog dialog = builder.setTitle("My dialog")
            .setItems(new String[]{"Do nothing...", "Dismiss!"}, null) // any listener will do!
            .create();

    // add this listener after dialog creation to stop auto dismiss on selection
    AdapterView.OnItemClickListener listener = new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            switch(position) {
                case 0:
                    // do nothing selected
                    break;
                case 1:
                    // dismiss selected
                    dialog.dismiss();
                    break;
            }
        }
    };
    dialog.getListView().setOnItemClickListener(listener);
    return dialog;
}
Run Code Online (Sandbox Code Playgroud)