[英]how to close/dismise dialog class from Activity in android?
I create CustomDialog
with using CustomDialogClass
for BackBTN as below: 我通过使用
CustomDialogClass
for BackBTN创建CustomDialog
,如下所示:
public void onBackPressed () {
CustomDialogClass cdd = new CustomDialogClass(Adult1Activity.this);
cdd.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
cdd.show();
}
public class CustomDialogClass extends Dialog {
public Activity c;
public Button minimizeBTN, exitBTN;
public CustomDialogClass(Activity a) {
super(a);
this.c = a;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.back_btn);
minimizeBTN = (Button) findViewById(R.id.minimizing_app);
exitBTN = (Button) findViewById(R.id.exit_completely);
...
}
@Override
public void dismiss() {
super.dismiss();
//cdd.dismiss();
}
}
Whenever I go back to the MainActivity, this dialog exists. 每当我返回MainActivity时,都会存在此对话框。 So I want to close/dismise it from MainActivity class like
cdd.dismise;
所以我想从MainActivity类(如
cdd.dismise;
关闭/分离它cdd.dismise;
. 。 But unfortunately it does not happen.
但不幸的是,它没有发生。 Would you please help me?
你能帮我吗? Thanks
谢谢
MainActivity.class: MainActivity.class:
public class MainActivity extends AppCompatActivity{
public CustomDialogClass cdd; // back dialog
private boolean isRunning = false;
public String timeString;
public NotificationManager notificationManager;
private static final String EXTRA_NOTE = "NOTE";
private static final String NOTE_RESTORE = "restore";
private static final String NOTE_CLOSE = "close";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_adult1);
handleIntent(getIntent());
}
//alert dialog for back btn
public void onBackPressed () {
CustomDialogClass cdd = new CustomDialogClass(Adult1Activity.this);
cdd.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
cdd.show();
}
public class CustomDialogClass extends Dialog {
public Activity c;
public Button minimizeBTN, exitBTN;
public CustomDialogClass(Activity a) {
super(a);
this.c = a;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.back_btn);
minimizeBTN = (Button) findViewById(R.id.minimizing_app);
exitBTN = (Button) findViewById(R.id.exit_completely);
minimizeBTN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
MinimizeApp();
isRunning = true;
ExtendedNotification(timeString);
}
});
exitBTN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CloseApp();
}
});
}
@Override
public void dismiss() {
super.dismiss();
}
}
//*****************Notification class******
private void ExtendedNotification(String time) {
final Intent resultIntentRestore = new Intent(this, Adult1Activity.class);
resultIntentRestore.putExtra(EXTRA_NOTE, NOTE_RESTORE);
PendingIntent restoreIntent = PendingIntent.getActivity(Adult1Activity.this,
0, resultIntentRestore, PendingIntent.FLAG_UPDATE_CURRENT);
final Intent resultIntentClose = new Intent(this, Adult1Activity.class);
resultIntentClose.putExtra(EXTRA_NOTE, NOTE_CLOSE);
PendingIntent closeIntent = PendingIntent.getActivity(Adult1Activity.this,
2, resultIntentClose, PendingIntent.FLAG_UPDATE_CURRENT);
final NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(Adult1Activity.this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("App Name")
.setContentText(time)
.setAutoCancel(true)
.addAction(new NotificationCompat.Action(R.mipmap.ic_launcher, "Restore", restoreIntent))
.addAction(new NotificationCompat.Action(R.mipmap.ic_launcher, "Close", closeIntent))
.setContentIntent(restoreIntent);
notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = notificationBuilder.build();
notification.flags |= Notification.FLAG_NO_CLEAR | Notification.FLAG_ONGOING_EVENT;
notificationManager.notify(0, notification);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent); // Make sure to call super
handleIntent(intent);
}
private void handleIntent(Intent intent) {
final String a = intent.getStringExtra(EXTRA_NOTE);
if (a != null) {
switch (a) {
case NOTE_RESTORE:
tv.setText(timeString);
**cdd.dismiss();**
break;
case NOTE_CLOSE:
countDownTimer.cancel();
isRunning = false;
notificationManager.cancel(0);
CloseApp();
break;
}
}
}
I want to close/dismise cdd
in NOTE_RESTORE
. 我想在
NOTE_RESTORE
关闭/分离cdd
。
If you want to hide the Dialog whenever you leave Activity, keep the dialog as a member, and dismiss it onStop() 如果要在每次离开“活动”时都隐藏对话框,请将该对话框保留为成员,然后在onStop()上将其关闭
// Keep track of the dialog
private CustomDialogClass cdd;
//alert dialog for back btn
public void onBackPressed () {
// Assign to a member instead, not the local variable
cdd = new CustomDialogClass(Adult1Activity.this);
cdd.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
cdd.show();
}
@Override
protected void onStop() {
super.onStop();
if (cdd != null) {
cdd.dismiss();
cdd = null;
}
}
If you want to delete dialog from activity 如果要从活动中删除对话框
dialog.dismiss();
If you want to delete dialog from that dialog class than use 如果要从该对话框类中删除对话框而不是使用
this.dismiss();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.