Reputation: 11
Trying to set a done list for todo app. I am trying to make a dialog show when clicked on button, after that dialog doesn't appear.
showdone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(todo.this);
builder.setAdapter(itemdone, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String strDone = itemdone.getItem(which);
AlertDialog.Builder builderInner = new AlertDialog.Builder(todo.this);
builderInner.setTitle("Done List");
builderInner.setMessage(strDone);
builderInner.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builderInner.create().show();
}
});
builder.show();
}
});
Upvotes: 0
Views: 116
Reputation: 76554
You want to call show on teh dialog, not on the builder. Also renamed from builder
to showDoneBuilder
to differentiate from the inner builder. Pulled out the inner build for readability.
showdone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder showDoneBuilder = new AlertDialog.Builder(todo.this);
showDoneBuilder.setAdapter(itemdone, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String strDone = itemdone.getItem(which);
showDoneListDialog(strDone);
}
});
showDoneBuilder.create().show(); // THE FIX
}
}
private void showDoneListDialog(String message) {
AlertDialog.Builder builderInner = new AlertDialog.Builder(todo.this);
builderInner.setTitle("Done List");
builderInner.setMessage(message);
builderInner.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builderInner.create().show();
}
Upvotes: 1