如何在android中关闭自定义对话框类

时间:2012-11-26 07:13:34

标签: android android-intent android-activity android-webview android-alertdialog

关闭自定义对话框时遇到问题。我有两个班级

 class 1->  AndroidHTMLActivity
 class 2->  CustomizeDialog

在我的AndroidHTMLActivity我使用的是从javascript调用的java界面,在这个类中我调用CustomizeDialog

     public class AndroidHTMLActivity extends Activity {
     WebView myBrowser;
     setContentView(R.layout.main);
     myBrowser = (WebView)findViewById(R.id.mybrowser);
     myBrowser.addJavascriptInterface(new MyJavaScriptInterface(this), "AndroidFunction");

     myBrowser.getSettings().setJavaScriptEnabled(true);
     myBrowser.loadUrl("file:///android_asset/mypage.html");


        }
      public class MyJavaScriptInterface {
         Context mContext;

          MyJavaScriptInterface(Context c) {
           mContext = c;
       }
          public void openAndroidDialog(){

            CustomizeDialog customizeDialog = new CustomizeDialog(mContext);
            customizeDialog.show();
       }

CustomizeDialog .java

 public class CustomizeDialog extends Dialog   {
    Context ctx ;
    public CustomizeDialog(Context context) {
    super(context);
     ctx = context;
    }

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);     
        setContentView(R.layout.test);
        MyThread downloadThread = new MyThread();
        downloadThread.start();
    }
   public class MyThread extends Thread {
        @Override
        public void run() {
        try {
       handler.post(new MyRunnable());
            }
        }
     }
    static public class MyRunnable implements Runnable {
        public void run() {

      // here i want to close this customized dialog

        }
      }

这里我不能使用finish()方法,我想通过线程关闭自定义对话框。有人对此有任何想法吗?

3 个答案:

答案 0 :(得分:0)

我知道这个问题在过去被问到并且可能已经回答但是没有分享正确的答案但我还是想分享这个问题,因为我也遇到了同样的问题。那么这就是我所做的。

首先创建基类,然后为对话框创建一个静态声明。

public class Dialogs {
    static Dialog dialog;

}

第二个是放置自定义对话框。

public void customDialog(Context context){         dialog = new Dialog(context);

    dialog.setContentView(R.layout.dialog_login);
    dialog.setTitle(title);
//... other parts here
    dialog.show();
}

然后对话解雇:

public static void dismissDialog(){
        dialog.dismiss();
    }

并在另一个类关闭当前的customDialog,只需调用

Dialogs.dismissDialog();

就是这样。 :)希望它有所帮助。

答案 1 :(得分:0)

用这样的外部处理程序关闭它

App.HANDLER.post(new Runnable() {
                @Override
                public void run() {
                    dismiss();
                    cancel();
                }
            });

App是一个应用程序类

答案 2 :(得分:-1)

尝试以下链接。它可能会对你有所帮助。

Link。希望它可以帮到某人。