android - 从 OnClick 中关闭 AlertDialog.Builder

标签 android android-alertdialog dismiss

我正在尝试为用户弹出一个对话框,该对话框的正文中有两个按钮,底部有一个取消按钮。当用户单击两个按钮之一时,对话框将消失,点击取消将直接取消对话框。取消部分工作正常,但我不知道如何手动关闭对话框。这是我的代码:

public void onItemClick(AdapterView<?> parent, View view,
                    final int position, long id) {

                Context mContext = getApplicationContext();
                LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
                View layout = inflater.inflate(R.layout.config_dialog,
                        (ViewGroup) findViewById(R.id.config_dialog));

                Button connect = (Button) layout.findViewById(R.id.config_connect);
                Button delete = (Button) layout.findViewById(R.id.config_delete);

                alert = new AlertDialog.Builder(Configuration.this);
                alert.setTitle("Profile");

                connect.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {

                        trace("Connect" + Integer.toString(position));
                        toast("Connected");
                        SharedPreferences app_preferences = 
                                PreferenceManager.getDefaultSharedPreferences(Configuration.this);
                        SharedPreferences.Editor editor = app_preferences.edit();
                        editor.putString("IP", fetch.get(position).IP);
                        editor.commit();
                        //Add dismiss here


                    }

                });

                delete.setOnClickListener(new View.OnClickListener() {

                    public void onClick(View v) {

                        trace("Delete");

                    }

                });


                // Set layout 
                alert.setView(layout);

                alert.setNegativeButton("Close", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                        // Canceled.
                    }
                });

                alert.show();

当我尝试添加 alert.dismiss() 时,Eclipse 给我一个错误。 .dismiss() 也不会出现在警报的自动完成列表中。

最佳答案

Merlin 的回答是正确的,应该被接受,但为了完整起见,我将发布一个替代方案。

问题是您试图关闭 AlertDialog.Builder 的实例而不是 AlertDialog。这就是 Eclipse 不会为您自动完成该方法的原因。在 AlertDialog.Builder 上调用 create() 后,您可以关闭收到的 AlertDialog。

public class AlertDialogTestActivity extends Activity
{

    AlertDialog alert;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button connect = new Button(this);
        connect.setText("Don't push me");

        AlertDialog.Builder alertBuilder = new AlertDialog.Builder(this);
        alertBuilder.setTitle("Profile");
        alertBuilder.setView(connect);


        connect.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                alert.dismiss();
            }
        });

        alert = alertBuilder.create();
    }
}

关于android - 从 OnClick 中关闭 AlertDialog.Builder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6836183/

相关文章:

ios - iPad 'dismiss keyboard' 按钮不关闭键盘

android - 如何使用 Unity 3D 在 Android 应用程序运行时从云/WEB 访问纹理/模型?

Android AlertDialog - 标题背景颜色

ios - ZBarSDK 不要关闭 viewController

android - 尝试在空对象引用(Fragment)上调用虚拟方法 'android.content.res.Resources$Theme android.content.Context.getTheme()'

java - 如何使 BaseAdapter 显示 AlertDialog android 应用程序

flutter - 如何使用Dissmissable从itembuilder中删除项目,并且该项目来自Firestore?

android - 实现版本的 Build.gradle 问题

android - 从另一台设备实时定位安卓设备

Android 在简单适配器中为 Spinner 设置 Hashmap Key 的默认值