6.dialog实现退出功能

今天在学习看代码的时候,发现了有趣的dialog,有2种退出的方法: 第一种:直接退出;第二种:是延迟退出

 

第一种:代码如下

  //dialog实现,直接可以调用dialog此方法
 private void dialog()
 {
       AlertDialog.Builder builder=new Builder(this);
       builder.setTitle("温馨提示");
       builder.setMessage("确认退出?");
       //确定按钮
       builder.setPositiveButton("确认",new DialogInterface.OnClickListener() {
  
  @Override
  public void onClick(DialogInterface dialog, int which) {
   // TODO Auto-generated method stub
   dialog.dismiss();
   MainActivity.this.finish();
  }
     });
        //取消按钮
       builder.setNegativeButton("取消",new DialogInterface.OnClickListener() {
  
  @Override
  public void onClick(DialogInterface dialog, int which) {
   // TODO Auto-generated method stub
   dialog.dismiss();
  }
 });
       builder.create().show();
 }
 
 //引进返回键的方法
 @Override
 public void onBackPressed() {
  
  //dialog 调用,点击返回键  提示是否退出
  dialog();
 }

直接退出,也可以在按钮的click事件中来实现调用,也可以在返回键里实现调用退出;

 

第二种:用AlertDialogFragment 来实现延迟退出

void showDialogFragment(int dialogID) {
  switch (dialogID) {
  case ALERTTAG:
   mDialog = AlertDialogFragment.newInstance();
   mDialog.show(getFragmentManager(), "Alert");
   break;
  case PROGRESSTAG:
   mDialog = ProgressDialogFragment.newInstance();
   mDialog.show(getFragmentManager(), "Shutdown");
   break;
  }
 }

 protected void continueShutdown(boolean shouldContinue) {
  if (shouldContinue) {
   mShutdownButton.setEnabled(false);
   showDialogFragment(PROGRESSTAG);
   finishShutdown();
  } else {
   mDialog.dismiss();
  }
 }

 private void finishShutdown() {
  new Thread(new Runnable() {
   @Override
   public void run() {
    try {
     // Pretend to do something before
     // shutting down
     Thread.sleep(5000);
    } catch (InterruptedException e) {
     Log.i(TAG, e.toString());
    } finally {
     finish();
    }
   }
  }).start();
 }

 public static class AlertDialogFragment extends DialogFragment {

  public static AlertDialogFragment newInstance() {
   return new AlertDialogFragment();
  }

  @Override
  public Dialog onCreateDialog(Bundle savedInstanceState) {
   return new AlertDialog.Builder(getActivity())
     .setMessage("Do you really want to exit?")
     .setCancelable(false)
     .setNegativeButton("No",
       new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog,
          int id) {
         ((AlertDialogActivity) getActivity())
           .continueShutdown(false);
        }
       })
     .setPositiveButton("Yes",
       new DialogInterface.OnClickListener() {
        public void onClick(
          final DialogInterface dialog, int id) {
         ((AlertDialogActivity) getActivity())
           .continueShutdown(true);
        }
       }).create();
  }
 }

 public static class ProgressDialogFragment extends DialogFragment {

  public static ProgressDialogFragment newInstance() {
   return new ProgressDialogFragment();
  }

  @Override
  public Dialog onCreateDialog(Bundle savedInstanceState) {
   final ProgressDialog dialog = new ProgressDialog(getActivity());
   dialog.setMessage("Activity Shutting Down.");
   dialog.setIndeterminate(true);
   return dialog;
  }
 }

 

直接调用showDialogFragment(ALERTTAG);即可调用上面的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值