对话从其他活动中解散

时间:2018-02-13 05:30:19

标签: java android alertdialog

我正在使用方法类进行警报对话并从其他活动中显示它。 示例我有方法类,它具有这样的警报对话。

public void showDialog(){
    final Dialog dialog = new Dialog(context);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setCancelable(false);
    dialog.setContentView(R.layout.dialog);
    RelativeLayout but_buy =  dialog.findViewById(R.id.but_buy);
    RelativeLayout but_exit = dialog.findViewById(R.id.but_exit);
    but_exit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog.dismiss();
            ((Activity) context).finish();

        }
    });
    but_buy.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intentSettingsnew = new Intent(context, SettingsActivity.class);
            context.startActivity(intentSettingsnew);

        }
    });
    dialog.show();

}

并在HomeActivity中调用

methods.showDialog();

但是当用户离开该活动时,我想从家庭活动中解除它。如果有人可以建议我怎么办,请告诉我。

由于

4 个答案:

答案 0 :(得分:2)

因此,您可以将Dialog class声明为class variable,如下所示: -

Dialog dialog;
public void showDialog(){
      dialog = new Dialog(context);
      dialog.show();      
}

然后,只要你想关闭它,只需调用stopDialog方法: -

public void stopDialog(){
     if(dialog != null) {
         dialog.dismiss();  
         dialog = null;    
     }
}

您可以查看top visible fragment and get instance。如果实例是您的dialog then dismiss

答案 1 :(得分:0)

final Dialog dialog;//declare as global 

创建内部

    dialog = new Dialog(getApplicationContext()); 

然后

   public void showDialog(){

        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setCancelable(false);
        dialog.setContentView(R.layout.dialog);
        RelativeLayout but_buy =  dialog.findViewById(R.id.but_buy);
        RelativeLayout but_exit = dialog.findViewById(R.id.but_exit);
        but_exit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
                ((Activity) context).finish();

            }
        });
        but_buy.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intentSettingsnew = new Intent(context, SettingsActivity.class);
                context.startActivity(intentSettingsnew);

            }
        });


        dialog.show();

    }

然后创建方法

public void closeDialog(){
 if(dialog != null)
   dialog.dismiss();
 }

打电话给你的Homeactivity destroy

    methods.closeDialog();

答案 2 :(得分:0)

关于你活动的

class YourActivty extends AppCompat{

//使对话框引用类级别

 private Dialog dialog = new Dialog(context);

//你的对话框调用方法

@Override
public void onDestroy(){

    dialog.dismiss();
}

答案 3 :(得分:0)

不要使用final来创建对话框的对象。

现在根据您的要求。

创建dialog的全局对象,而不是showDialog()。如: -

Dialog dialog;

,并在

showDialog(){
dialog = new Dialog(context);

现在, 关闭你可以使用的对话框

if(dialog !=null){
  dialog.dismiss();
}

根据您的要求,是否在,

onPause,onStop,onDestroy