android showDialog(int what)(转)

android showDialog(int what)

利用onCreateDialog 显示对话框的方式

 

1.重写onCreateDialog(int id)

@Override
 protected Dialog onCreateDialog(int id) {
  Builder builder = null;
  switch (id) {
  case 1:
   builder = new AlertDialog.Builder(this)
          .setIcon(R.drawable.d_message)
          .setTitle("Message")
          .setMessage(R.string.runeEncrypt_message)
          .setNeutralButton("知道了", new DialogInterface.OnClickListener() {
          
          @Override
          public void onClick(DialogInterface dialog, int which) {
           // TODO Auto-generated method stub
           ShowView.back(RunEncoding.this);
          }
         });
   break;
  case 2:
   builder = new AlertDialog.Builder(RunEncoding.this)
    .setIcon(R.drawable.d_message)
   .setTitle("取消")
   .setMessage("您确实要取消吗")
   .setPositiveButton(R.string.positive, new DialogInterface.OnClickListener() {
    
    @Override
    public void onClick(DialogInterface dialog, int which) {
     // TODO Auto-generated method stub
     cancelFlag = false;
    }
   }).
   setNegativeButton(R.string.negative, new DialogInterface.OnClickListener() {
    
    @Override
    public void onClick(DialogInterface dialog, int which) {
     // TODO Auto-generated method stub
     
    }
   });
   break; 
  default:
   break;
  }
  return builder.create();
 }

 

2,调用显示对话框 showDialog(id); 该方法会调用onCreateDialog方法来显示对话框

在Service中使用AlertDialog需要注意一些问题,因为Service并没有UI界面,所以需要在Service中创建一个Handler来处理AlertDialog的显示。 以下是在Service中使用AlertDialog的步骤: 1. 在Service中创建一个Handler,用于处理AlertDialog的显示。 ```java private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case SHOW_DIALOG: showDialog(); break; case DISMISS_DIALOG: dismissDialog(); break; default: break; } } }; ``` 2. 在Service中创建一个AlertDialog,并在需要显示AlertDialog时发送一个 Message 给 Handler。 ```java private void showDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("提示"); builder.setMessage("这是一个AlertDialog"); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 点击确定按钮后的操作 } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 点击取消按钮后的操作 } }); mAlertDialog = builder.create(); mAlertDialog.show(); } private void dismissDialog() { if (mAlertDialog != null) { mAlertDialog.dismiss(); } } ``` 3. 在Service中接收来自其他组件的指令,并根据指令发送不同的 Message 给 Handler。 ```java @Override public int onStartCommand(Intent intent, int flags, int startId) { int command = intent.getIntExtra("command", 0); switch (command) { case SHOW_DIALOG: mHandler.sendEmptyMessage(SHOW_DIALOG); break; case DISMISS_DIALOG: mHandler.sendEmptyMessage(DISMISS_DIALOG); break; default: break; } return super.onStartCommand(intent, flags, startId); } ``` 通过以上步骤,在Service中就可以使用AlertDialog了。需要注意的是,在Service中使用AlertDialog时,需要在AndroidManifest.xml中声明权限 android.permission.SYSTEM_ALERT_WINDOW。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值