这个问题已经在这里有了答案:

我有一个带有3个EditText的对话框,用于获取ftp地址,用户名和密码。 我使用.setNeutralButton创建一个“测试连接”按钮。 我设法连接到ftp并显示结果吐司,但我不希望“测试按钮”关闭对话框。 在连接测试期间如何保持对话框打开?

livePreviewChk.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        LinearLayout lila1 = new LinearLayout(NewSite.this);
        lila1.setOrientation(1); // 1 is for vertical orientation

        final EditText serverName = new EditText(NewSite.this);
        serverName.setHint("Server name");

        final EditText serverAddress = new EditText(NewSite.this);
        serverAddress.setHint("Server Address");

        final EditText username = new EditText(NewSite.this);
        username.setHint("Username:");

        final EditText password = new EditText(NewSite.this);
        password.setHint("Password");

        AlertDialog.Builder alt_bld = new AlertDialog.Builder(
                NewSite.this);
        alt_bld.setIcon(R.drawable.ftpicon);
        alt_bld.setTitle("Enter the login details for the host FTP")
                .setCancelable(true)
                .setPositiveButton("Save",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                }
                            }
                        })
                .setNeutralButton("Test Connection",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                FTPConnector testConnection = new FTPConnector();
                                boolean status = testConnection
                                        .ftpConnect(host, user, pass,
                                                port);
                                if (status == true) {
                                    connectionSuccessfull = true;
                                } else {
                                    connectionSuccessfull = false;
                                }
                            }
                        })
                .setNegativeButton("Cancel",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                // if this button is clicked, just close
                                // the dialog box and do nothing
                                dialog.cancel();
                            }
                        });

        lila1.addView(serverName);
        lila1.addView(serverAddress);
        lila1.addView(username);
        lila1.addView(password);

        AlertDialog alert = alt_bld.create();
        alert.setView(lila1);
        alert.show();
    }
});

===============>>#1 票数:3 已采纳

据我所知,不扩展Dialog类是不可能的。 但是,使用您拥有的功能,将其放入自己的Activity并使用Dialog theme可能会更容易,更好。 您所要做的就是为此将代码放入新的Activity ,并在manifest使用dialog theme

<activity
        android:name="com.your.package.YourClassName"
        android:label="YOurLabel"
        android:theme="@android:style/Theme.Dialog" >
</activity>

Dialog包含在其自己的Activity时,这将赋予Dialog外观

这是扩展Dialog的答案 我没有仔细研究过所有内容,但是如果您选择此选项,它可能会满足您的需求。

  ask by RapsFan1981 translate from so

未解决问题?本站智能推荐: