微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

即使我在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()方法.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐