android 2.1中的AlertDialog

发布于 2024-11-02 07:45:27 字数 2307 浏览 1 评论 0原文

我用以下方式创建并显示我的对话框:

showDialog(1); // Logcat say me that mistake is here.
protected Dialog onCreateDialog(int id) {
            switch (id) {
            case 1:{
                Builder builder = new AlertDialog.Builder(this);
                builder.setMessage(R.string.SelectLoc)
                        .setCancelable(true)
                        .setPositiveButton(R.string.Phone, new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog,
                                            int which) {
                                        if (mExternalStorageAvailable)
                                        {
                                        PathOpenFile = Environment.getExternalStorageDirectory().getPath();
                                        FileManagerActivity(Settings.Pref.getString("Path_Open", PathOpenFile), REQUEST_LOAD);
                                        }
                                        else 
                                            Toast.makeText(Main.this, R.string.CheckSD , Toast.LENGTH_LONG).show();
                                    }
                                })
                        .setNegativeButton(R.string.Ftp, new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog,int which){  
                                    if (Settings.Pref.getBoolean("Ftp_User",false))
                                    {
                                        FtpConnect _FtpConnect = new FtpConnect();
                                        _FtpConnect.Save_Open = FTP_REQUEST_LOAD;
                                        _FtpConnect.execute();
                                    }
                                else 
                                Toast.makeText(Main.this, R.string.SetPass , Toast.LENGTH_LONG).show();
                                    }
                                });
                AlertDialog dialog = builder.create();
                dialog.show();
                break;
                }

在 2.2 中它工作得很好,但在 2.1 中它会导致强制关闭 -

“java.lang.Illegalargument例外: Activity#onCreateDialog 未创建 id 1 的对话框"

为什么会这样?

I create and show my dialog in next way:

showDialog(1); // Logcat say me that mistake is here.
protected Dialog onCreateDialog(int id) {
            switch (id) {
            case 1:{
                Builder builder = new AlertDialog.Builder(this);
                builder.setMessage(R.string.SelectLoc)
                        .setCancelable(true)
                        .setPositiveButton(R.string.Phone, new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog,
                                            int which) {
                                        if (mExternalStorageAvailable)
                                        {
                                        PathOpenFile = Environment.getExternalStorageDirectory().getPath();
                                        FileManagerActivity(Settings.Pref.getString("Path_Open", PathOpenFile), REQUEST_LOAD);
                                        }
                                        else 
                                            Toast.makeText(Main.this, R.string.CheckSD , Toast.LENGTH_LONG).show();
                                    }
                                })
                        .setNegativeButton(R.string.Ftp, new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog,int which){  
                                    if (Settings.Pref.getBoolean("Ftp_User",false))
                                    {
                                        FtpConnect _FtpConnect = new FtpConnect();
                                        _FtpConnect.Save_Open = FTP_REQUEST_LOAD;
                                        _FtpConnect.execute();
                                    }
                                else 
                                Toast.makeText(Main.this, R.string.SetPass , Toast.LENGTH_LONG).show();
                                    }
                                });
                AlertDialog dialog = builder.create();
                dialog.show();
                break;
                }

In 2.2 It works very well, but in 2.1 it causes force close with -

"java.lang.Illegalargumentexeption:
Activity#onCreateDialog did not create
a dialog for id 1"

Why so?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

似最初 2024-11-09 07:45:27

如果替换

 AlertDialog dialog = builder.create();
    dialog.show();
    break;

return builder.create();

就会按预期开始工作。不知道为什么。

If replace

 AlertDialog dialog = builder.create();
    dialog.show();
    break;

on

return builder.create();

It starts work as expected. Dont know why.

帅气称霸 2024-11-09 07:45:27

我假设这是因为这个

受保护的对话框 onCreateDialog (int id)

自:API 级别 1
此方法已被弃用。
onCreateDialog(int, Bundle) 的旧无参数版本。

所以这一行

 Protected Dialog onCreateDialog(int id) {

应该是这样的(未经测试,但很确定)

 Protected Dialog onCreateDialog(int id, Bundle yourBundle) {

I'm assuming it is because of this

protected Dialog onCreateDialog (int id)

Since: API Level 1
This method is deprecated.
Old no-arguments version of onCreateDialog(int, Bundle).

so this line

 Protected Dialog onCreateDialog(int id) {

Should be something like this (untested, but pretty sure)

 Protected Dialog onCreateDialog(int id, Bundle yourBundle) {
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文