android - 关闭android中的对话框

标签 android

我在 onCreate 方法中有一个 imageView,我在其中使用方法 showList。这是代码:

action_bar_log_in_icon.setOnClickListener(new OnClickListener() {

                            @Override
                            public void onClick(View v) {

                                allResults.clear();
                                allResults.add(action_bar_log_in_icon);
                                allResults.add(action_bar_data_privacy_icon);
                                allResults.add(action_bar_vCard_icon);
                                allResults.add(action_bar_email_icon);
                                showList();
                            }
                        });

和代码方法showList:

private void showList() {
            final ListDialog listDialog = new ListDialog(this);
            listDialog.setCanceledOnTouchOutside(true);

            final ListView lv = (ListView) listDialog
                    .findViewById(R.id.spinnerlist);

            if(lAdapter == null){
                lAdapter = new ListAdapter(getBaseContext(),
                    R.layout.spinner_item,
                    (ArrayList<ImageView>) allResults);
            }

            lv.setAdapter(lAdapter);
            lv.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
                    switch(position){
                    case 0:
                        intent = new Intent(ActionBarMain2.this, LoginActivity.class);
                        startActivity(intent);
                        break;
                    case 1:
                        intent = new Intent(ActionBarMain2.this, LoginActivity.class);
                        startActivity(intent);
                        break;
                    case 2:
                        intent = new Intent(ActionBarMain2.this, vCard_view.class);
                        startActivity(intent);
                        break;
                    case 3:
                        intent = new Intent(ActionBarMain2.this, EmailView.class);
                        startActivity(intent);
                        break;
                    }
                    listDialog.dismiss();
                }

            });
            WindowManager.LayoutParams WMLP = listDialog.getWindow()
                    .getAttributes();
            WMLP.gravity = Gravity.TOP | Gravity.RIGHT;
            WMLP.y = 50;
            WMLP.width = 100;
            listDialog.getWindow().setAttributes(WMLP);

                listDialog.show();



        }

这个解决方案有效,如果我点击 ImageView ,我的列表就会显示出来,但问题是当我再次点击同一个 ImageView 时。列表仍然可见。当我第一次点击我的列表显示时,以及当我再次点击我的列表时,我该怎么办?

最佳答案

如果您只在 Activity 的 onCreate 中创建了一次 ListDialog 还没有显示它会怎样?然后在单击您的 ImageView 时您可以执行 if(dialog.isVisible ()) { 对话框.显示(); } else { dialog.dismiss(); }

关于android - 关闭android中的对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13045512/

相关文章:

android - 修复 SharedElementTransition 动画显示不佳

Android onLongClickListener 用于查看和冒泡子事件

android - 工具栏文本设置为类 ="center",但在 android 浏览器中看到在左侧

android - 如何在android studio的xml字符串文件中放置 "&"

java - 如果不存在则插入整数,如果 Firebase 实时数据库 Android 中已存在则递增

安卓工作室 : Keep project file tree state expanded

android - 不能在 Activity 之间调用静态方法

java - 停止 Eclipse/Gradle 生成 .project 和 .settings/

android - 在 Azure VM 上安装 Android 模拟器 (HAXM)

Android如何使用自定义选择器制作涟漪效果