1

我在关闭自定义对话框时遇到问题。我有两节课

 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();
       }

自定义对话框 .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()方法,我想通过线程关闭自定义对话框。有人对此有任何想法吗?

4

2 回答 2

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();

而已。:) 希望能帮助到你。

于 2013-07-17T11:00:53.153 回答
0

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

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

App 是一个应用程序类

于 2016-10-29T14:09:47.103 回答