AlertDialog в Android 2.1 - PullRequest
       64

AlertDialog в Android 2.1

1 голос
/ 17 апреля 2011

Я создаю и показываю свой диалог следующим образом:

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.Illegalargumentexeption: Activity # onCreateDialog не создал диалоговое окно для идентификатора 1 "

Почему так?

Ответы [ 2 ]

1 голос
/ 17 апреля 2011

Если заменить

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

на

return builder.create();

Он начинает работать как положено. Не знаю почему.

0 голосов
/ 17 апреля 2011

Я предполагаю, что это из-за этого

protected Dialog onCreateDialog (int id)

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

, поэтому эта строка

 Protected Dialog onCreateDialog(int id) {

должна выглядеть примерно так(не проверено, но почти наверняка)

 Protected Dialog onCreateDialog(int id, Bundle yourBundle) {
...