您的位置:首页 > 其它

6.dialog实现退出功能

2015-08-02 12:57 375 查看
今天在学习看代码的时候,发现了有趣的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);即可调用上面的方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: