Tengo una clase de Java, no actividad. Desde cualquier otra actividad, llamé a esta clase y, en esa clase, creé alertoDialog Builder. En eso inflo de datos de DB.

Ahora en esta clase, también tengo otro oyente y método. En uno de los métodos, quiero descartar / cancelar este diálogo. Como lo hacemos

setResult(RESULT_OK, intent);
        finish();

En cualquier actividad, lo mismo que quiero hacer en clase.

Código: Este método que llamé desde la actividad.

 public void showProvidersDialog(long customCategoryId) {
        categoryId = customCategoryId;
        LayoutInflater li = LayoutInflater.from(context);
        promptsView = li.inflate(R.layout.row_providers_layout, null);
        init();
        alertDialogBuilder = new android.app.AlertDialog.Builder(context, R.style.dialogBoxStyle);
        alertDialogBuilder.setView(promptsView);

        alertDialogBuilder.setNegativeButton(context.getString(R.string.cancel), new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });

        isInsurance();
        alertDialogBuilder.show();
//solved:  dialog = alertDialogBuilder.create();
        dialog.show();
        }

Y tengo un método más en la misma clase Java, desde ese método, quiero descartar el cuadro de diálogo ABENADO CORRALLT.

  private void sendProviderData(General provider) {
        Singleton.getInstance().setProviderId(provider.getId());
        Singleton.getInstance().setProviderIcon(provider.getIcon());
        Singleton.getInstance().setProviderName(provider.getName());
//solved
dialog.dismiss
}

Explique una vez más: vea, puedo cancelar el cuadro de diálogo dentro del botón negativo. Pero lo que quiero es, en ese diálogo, me inflate en la fila que incluye una lista de contactos. Quiero que cuando el usuario haga clic en cualquiera de los contactos (que es digno de hacer clic en el reciclador en el oyente táctil), estoy pasando algunos datos utilizando Singleton y, en ese momento, quiero descartar el cuadro de diálogo.

1
Anisha Singh 29 jun. 2019 a las 12:30

1 respuesta

La mejor respuesta

Aquí está el código de diálogo para un propósito genérico. Puede llamar cuando necesite mostrar el diálogo. Puede mostrar el cuadro de diálogo llamando a showDialog() METODOS Y AMP; Descartar llamando al método dismissDialog().

/*
* call whenever dialog is required in whole app in form of popup
*/
public class MyDialog implements View.OnClickListener {
  private Dialog dialog;
  private Context context;
  private TextView tvTitle;
  private TextView tvSubtitle;
  private Button bt_ok;
  private String strInvalidUserNamePass, strHeader;
  /*
    * constructor to change the text dynamically.
  */
  public MyDialog(Context context, String strHeader, String invalidUserNamePass) {
     this.context = context;
     this.strInvalidUserNamePass = invalidUserNamePass;
     this.strHeader = strHeader;
     if (context != null) {
         initDialog();
     }
 }
 /*
  * set id of all the view components and implement listeners
  */
 private void initDialog() {

    dialog = new Dialog(context, R.style.FMDialogNormal);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setContentView(R.layout.dialog_validation);
    dialog.setCancelable(false);
    dialog.setCanceledOnTouchOutside(false);
    dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
    dialog.show();

    tvTitle = (TextView) dialog.findViewById(R.id.tv_title);
    tvSubtitle = (TextView) dialog.findViewById(R.id.tv_subtitle);
    tvTitle.setText(strHeader);
    tvSubtitle.setText(strInvalidUserNamePass);
    bt_ok = (Button) dialog.findViewById(R.id.bt_ok);
    bt_ok.setOnClickListener(this);

}
/*
 * Implement listener according to the views
 */
 @Override
 public void onClick(View view) {
     switch (view.getId()) {
         case R.id.bt_ok:
             dialog.dismiss();
             break;
     }
 }
 public void showDialog(){
     if(dialog!=null){
         dialog.show();
     }
 }
 public void dismissDialog(){
     if(dialog!=null && isVisible()){
         dialog.show();
     }
 }  
 public boolean isVisible() {
     if (dialog != null) {
         return dialog.isShowing();
     }
     return false;
   }
 }
1
Sanjay Bhalani 29 jun. 2019 a las 09:44