Youngho Kim
Youngho Kim

Reputation: 11

Alert dialog doesn't appear in Android

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

Answers (1)

Blundell
Blundell

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

Related Questions