我面临以下问题.
我有一个图像库,我想打开一个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 举报,一经查实,本站将立刻删除。