Я столкнулся со следующей проблемой.
У меня есть изображение Gallery
, и я хочу открыть 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();
}
});
}