即使我在Android上调用onCreateDialog,也不会创建AlertDialog

我面临以下问题.

我有一个图像库,我想打开一个AlertDialog来显示有关所点击图像的一些信息.我第一次点击图片,它运行得很好.但是以下时间,即使我点击不同的图像,同样的对话框也会再次出现.

UserCase

当我关注此用户案例时

>选择位置2的图像
>关闭对话框
>在位置6中选择图像
>关闭对话框

,我得到这些印刷品:

click na galeria... position: 2
startUserinformationDialog()... `this.position`: 2
onCreateDialog on switch.. `this.position`: 2
disMISSING DIALOG `this.position`: 2

click na galeria... position: 6
startUserinformationDialog()... `this.position`: 6
disMISSING DIALOG `this.position`: 6

这意味着代码没有通过onCreateDialog运行

public AlertDialog createuserinformationAlertDialog() {
        LayoutInflater inflater = getLayoutInflater();
        View dialoglayout = inflater.inflate(R.layout.dialog_user_info,
                (ViewGroup) findViewById(R.id.dialog_user_layout_root));
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setView(dialoglayout);
        final MyObject ea = myList.get(positionUserToHaveinformationdisplayedOnTheDialog);
            // Setting values according to element to be shown
            TextView textView = (TextView) dialoglayout
                    .findViewById(R.id.user_name_value);
            textView.setText(ea.getName());
            ...
            builder.setNegativeButton(Locale_PT_BR.BACK,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog,
                                int whichButton) {
                            Log.d("PRINT 1",
                                    "disMISSING DIALOG `this.position`: "
                                            + positionUserToHaveinformationdisplayedOnTheDialog);
                            dialog.dismiss();
                        }
                    });
            return builder.create();
}


private void startUserinformationDialog() {
    Log.d("PRINT 2", "startUserinformationDialog()... `this.position`: "
            + positionUserToHaveinformationdisplayedOnTheDialog);
    showDialog(DIALOG_USER_informatION);
}



@Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
        case DIALOG_USER_informatION:
            Log.d("PRINT 3", "onCreateDialog on switch.. `this.position`: "
                    + positionUserToHaveinformationdisplayedOnTheDialog);
            return createuserinformationAlertDialog();
        default:
            return null;
        }
    }

private void startgallery() {
        myPhotoBar = (gallery) findViewById(R.id.gallery);
        myPhotoBar.setonItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView parent, View v, int position,
                    long id) {
                Log.d("PRINT 4", "click na galeria... position: " + position);
                positionUserToHaveinformationdisplayedOnTheDialog = position;
                startUserinformationDialog();
            }
        });

}

解决方法:

使用onPrepareDialog()方法填充数据对话框.如果要销毁对话框,则应调用removeDialog()方法.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...