javajava web 弹出对话框框后,主程序会继续运行,怎样设置等待?

1132人阅读
Android(55)
&&&&& 在项目开发中,经常会用到对话框,Android的对话框都是异步进行的,但是有时候需要实现主程序等待对话框响应后再继续执行。下面以使用AlterDialog对话框返回true或者false之后,主程序再继续运行为例讲述如何实现主程序等待对话框响应后再顺序执行的方法。
&&&&& 首先考虑到声明一个final&关键字的布尔型的局部变量,然后在对话框的“确认”和“取消”按钮的点击事件中对布尔型变量进行赋值,然后再执行主程序。
问题一:在代码的过程对布尔型变量进行赋值的时候提示错误。
&&&&& 错误如下:The&final&local&variable&xxx&cannot&be&assigned,&since&it&is&defined&in&an&enclosing&type&其中xxx是一个局部变量名,首先这是一个java编译时的错误,翻译成中文是:不可变的局部变量不能被赋值,因为它已经被定义在一个封闭类型中。
解决办法:将xxx&作一下封装,用集合或者数组,如果xxx是基本数据类型一般用数组。
&&&&& 如:xxx为&String类型的话,可以封装成&String[]&xxx=然后在接下来用到&xxx&变量的地方,&将xxx&写成&xxx[0];xxx&如果为对象的话,那么可以用集合&将xxx进行封装。
问题二:对话框是异步的,也就是说在等待对话框执行的过程中,主程序也在运行。
&&&&& 其实可以使用全局变量,只是在调用对话框之后不能写需要对话框返回值有关的代码,然后等对话框响应之后,在主程序中再设置一个触发,然后继续执行主程序,这样是可行,但是有时候不符合用户的习惯。
&&&&& 因为问题二的存在思考一的方法不能实现。
思考二:&给AlterDialog创建监听器。
&&&& 下面代码在调用对话框之后同样也不能写需要对话框返回值有关的代码,但是对话框响应之后不需要再设置触发,其实本质上来说也就是用设置监听器的方法在主程序中设置一个触发,其实针对思考一中的问题二的一种解决方法。
代码如下:
1.&MyInterface.java
public class MyInterface {
DialogReturn dialogR
public interface DialogReturn {
void onDialogCompleted(boolean answer);
public void setListener(DialogReturn dialogReturn) {
this.dialogReturn = dialogR
public DialogReturn getListener() {
return dialogR
2.Main.java
public class Main extends Activity implements MyInterface.DialogReturn{
MyInterface myI
MyInterface.DialogReturn dialogR
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myInterface = new MyInterface();
myInterface.setListener(this);
public void Confirm(Context context) {
AlertDialog dialog = new AlertDialog.Builder(context).create();
dialog.setTitle(&Confirmation&);
dialog.setMessage(&Choose Yes or No&);
dialog.setCancelable(false);
dialog.setButton(DialogInterface.BUTTON_POSITIVE, &Yes&,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int buttonId) {
myInterface.getListener().onDialogCompleted(true);
dialog.setButton(DialogInterface.BUTTON_NEGATIVE, &No&,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int buttonId) {
myInterface.getListener().onDialogCompleted(false);
dialog.setIcon(android.R.drawable.ic_dialog_alert);
dialog.show();
public void onDialogCompleted(boolean answer) {
Toast.makeText(Main.this, answer+&&, Toast.LENGTH_LONG).show();
if(answer)
// do something
// do something
上述代码可以对比控件添加监听器来理解。
参考网址:http://ask.csdn.net/questions/464
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:207316次
积分:3092
积分:3092
排名:第11190名
原创:106篇
转载:42篇
评论:18条
(2)(1)(3)(5)(1)(1)(5)(5)(4)(1)(1)(5)(14)(5)(4)(9)(11)(2)(3)(9)(7)(10)(19)(21)璁﹋ava绋嬪簭鍦ㄥ悗鍙颁竴鐩存墽琛岋紙渚嬪?putty鍏抽棴鍚庡悗鍙扮▼搴忕户缁?繍琛岋級 - qsfwy - ITeye鍗氬?
鍗氬?鍒嗙被锛

我要回帖

更多关于 java swing弹出对话框 的文章

 

随机推荐