user12504353
user12504353

Reputation: 457

AlertDialog android studio

I am trying to show an alert dialog which contains a loading animation. The Alert dialog needs to appear after clicking another alert dialog that was initially in display. Basically,the first dialog contains a setPositive and setNegative button. The setPositive event is triggers a process which takes a few seconds. I wanted the second dialog containing the loading animation to appear when the process begins. I am not able to dismiss the first dialog until the process is done for the loading dialog to show.

//dialog that contains loading animation
    public class LoadingBox {
    Activity myActivity;
    AlertDialog dialog;

    LoadingBox(Activity activity){
        myActivity = activity;
    }
     void startLoadingDialog(){
        AlertDialog.Builder builder = new AlertDialog.Builder(myActivity);
        LayoutInflater inflater = myActivity.getLayoutInflater();
        builder.setView(inflater.inflate(R.layout.layout_dialog,null));
        builder.setCancelable(true);
        dialog = builder.create();
        dialog.show();
    }
    void dismissDialog(){
        dialog.dismiss();
    }
}

 

      
     new AlertDialog.Builder(SmsListActivity.this)
    
                            .setIcon(android.R.drawable.ic_dialog_alert)
                            .setTitle("Add To Transaction List")
                            .setMessage("Please note that this process might take long. Proceed?")
                            .setPositiveButton("yes", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    LoadingBox loadingBox = new LoadingBox(SmsListActivity.this);
    
                                    loadingBox.startLoadingDialog();
    
                                    addPendingToList();
                                    loadingBox.dismissDialog();
    
    
                                }
                            }).setNegativeButton("No",null).show();

Upvotes: 2

Views: 2183

Answers (2)

user18271507
user18271507

Reputation:

Like @MathankumarK said, calling .dismiss(); in your positive onClick function is perhaps the best option, but you could use Thread.sleep(----) after the dismiss(); to wait in milliseconds until the operation is underway and then show the "loading" dialog. Since the operation is slowing down the app thread anyway, it shouldn't pose a problem by slowing or stopping your app for a few seconds.

Upvotes: 0

MathankumarK
MathankumarK

Reputation: 2905

To dismiss this alert dialog you should call dialog.dismiss(); in setPositiveButton onClick

 new AlertDialog.Builder(SmsListActivity.this) .setIcon(android.R.drawable.ic_dialog_alert)
           .setTitle("Add To Transaction List")
           .setMessage("Please note that this process might take long. Proceed?")
           .setPositiveButton("yes", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {                    
        dialog.dismiss();
        LoadingBox loadingBox = new LoadingBox(SmsListActivity.this);
    loadingBox.startLoadingDialog();
    addPendingToList();
    loadingBox.dismissDialog();
    }
      }).setNegativeButton("No",null).show();

Upvotes: 2

Related Questions