Java课程设计笔记-Android系统创建阻塞式对话框

在复制/剪切文件的时候,可能要在执行过程中弹出对话框等待用户确认,然后选择继续操作或者取消操作。但弹出对话框的时候只能靠listener相应点击事件,不能直接调用某个方法,让方法阻塞,用户做出操作时再返回。这样的操作可以借助looper实现

赶脚抄来的这个实现略简单粗暴……不过又不是不能用


import android.app.Activity;
import android.app.Dialog;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.text.method.PasswordTransformationMethod;
import android.text.method.TransformationMethod;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
public class PasswordDialog extends Dialog
{
	int dialogResult;
	Handler mHandler ;
	
	public PasswordDialog(Activity context, String mailName, boolean retry)
	{
		
		super(context);
		setOwnerActivity(context);
		onCreate();
		TextView promptLbl = (TextView) findViewById(R.id.promptLbl);
		promptLbl.setText("请输入密码/n" + mailName);
	}
	public int getDialogResult()
	{
		return dialogResult;
	}
	public void setDialogResult(int dialogResult)
	{
		this.dialogResult = dialogResult;
	}
	/** Called when the activity is first created. */
	
	public void onCreate() {
		setContentView(R.layout.password_dialog);
		findViewById(R.id.cancelBtn).setOnClickListener(new android.view.View.OnClickListener() {
			
			@Override
			public void onClick(View paramView)
			{
				endDialog(DialogResult.CANCEL);
			}
			});
		findViewById(R.id.okBtn).setOnClickListener(new android.view.View.OnClickListener() {
			
			@Override
			public void onClick(View paramView)
			{
				endDialog(DialogResult.OK);
			}
			});
		}
	
	public void endDialog(int result)
	{
		dismiss();
		setDialogResult(result);
		Message m = mHandler.obtainMessage();
		mHandler.sendMessage(m);
	}
	
	public int showDialog()
	{
		mHandler = new Handler() {
			@Override
              public void handleMessage(Message mesg) {
                  // process incoming messages here
				//super.handleMessage(msg);
				throw new RuntimeException();
              }
          };
		super.show();
		try {
			Looper.getMainLooper().loop();
		}
		catch(RuntimeException e2)
		{
		}
		return dialogResult;
	}
	
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值