Android 如何在单击DialogFragment的适配器后使其可见?

Android 如何在单击DialogFragment的适配器后使其可见?,android,Android,我有一个DialogFragment和相关的simpledapter来监听点击。当我点击列表视图中的任何项目时,对话框片段会自动关闭。如何使其可见 public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(getResources().

我有一个
DialogFragment
和相关的
simpledapter
来监听点击。当我点击
列表视图
中的任何项目时,
对话框片段
会自动关闭。如何使其可见

public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle(getResources().getString(R.string.choose_file_for_import));
        mAdapter = new MAdapter(getActivity(), R.id.file_explorer_tv_filename, itemsList);

        builder.setAdapter(mAdapter, new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialogInterface, int position) {
                File file = new File(pathList.get(position));

                        getDir(pathList.get(position));
                        mAdapter.notifyDataSetChanged();
    }
    return builder.create();
    }
您有两个选择:
不要在
Builder.create()之后使用AlertDialog.Builder或设置
OnClickListener

builder.create()之后设置侦听器
将带有
OnClickListener
的适配器设置为
null

builder.setAdapter(mAdapter, null);
在builder.create()之后指定
OnItemClickListener

AlertDialog dialog = builder.create();
dialog.getListView().setOnItemClickListener(...);
我必须承认,我没有测试过它,我只是查看了Android源代码。

你有两个选择:
不要在
Builder.create()之后使用AlertDialog.Builder或设置
OnClickListener

builder.create()之后设置侦听器
将带有
OnClickListener
的适配器设置为
null

builder.setAdapter(mAdapter, null);
在builder.create()之后指定
OnItemClickListener

AlertDialog dialog = builder.create();
dialog.getListView().setOnItemClickListener(...);
我必须承认我没有测试它,我只是查看了Android源代码。

您可以尝试使用而不是
setAdapter()
。从文件中:

  • 适配器

    用于提供项目列表的ListAdapter

  • checkedItem

    指定要选中的项目。如果-1,则不检查任何项目

  • listener

    单击列表中的项目时通知。对话框将显示 单击某个项目时,不能将其取消。它只会被驳回 如果单击按钮,如果没有提供按钮,则由 用户关闭该对话框

因此,它应该按照您想要的方式工作,只需使用-1作为
checkedItem
参数。

您可以尝试使用而不是
setAdapter()
。从文件中:

  • 适配器

    用于提供项目列表的ListAdapter

  • checkedItem

    指定要选中的项目。如果-1,则不检查任何项目

  • listener

    单击列表中的项目时通知。对话框将显示 单击某个项目时,不能将其取消。它只会被驳回 如果单击按钮,如果没有提供按钮,则由 用户关闭该对话框


因此,它应该按照您想要的方式工作,只需使用-1作为
checkedItem
参数。

您需要覆盖addapter的getView,并在单击侦听器时侦听视图,在该侦听器内返回false,这样它将告诉系统没有人处理此触摸事件


检查此项。

您需要覆盖addapter的getView,并侦听视图onClick侦听器,在该侦听器中返回false,这样它将告诉系统没有人处理此触摸事件


检查此项。

builder.setCancelable(false)?@blackbelt否,此项无效。请尝试
builder.create().setCanceledOnTouchOut(false)
@mmohsinNaeem没有这样的方法。你尝试过这个吗?查看此生成器。setCancelable(false)?@blackbelt否,这不起作用。请尝试
builder.create()。setCanceledOnTouchOut(false)
@mmohsinNaeem没有这样的方法。你尝试过这个吗?看到这个,我会试试看,请同时指定您的确切位置。行:921 imho,我认为我的答案更好,因为它不依赖于未记录的行为:)我会试试看,请同时指定您的确切位置。行:921 imho,我认为我的答案更好,因为它不依赖于未记录的行为:)