我正在使用方法类进行警报对话并从其他活动中显示它。 示例我有方法类,它具有这样的警报对话。
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();
但是当用户离开该活动时,我想从家庭活动中解除它。如果有人可以建议我怎么办,请告诉我。
由于
答案 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