1

カスタム ダイアログを閉じるのに問題があります。私は2つのクラスを持っています

 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()メソッドを使用できません。カスタマイズしたダイアログ ボックスをスレッド経由で閉じたいと考えています。誰でもこれについて何か考えがありますか?

4

2 に答える 2

0

この質問は過去に尋ねられ、おそらくすでに回答されていることは知っていますが、正しい回答を共有していませんが、同じ問題が発生したため、これを共有したいと思います。さて、これが私がやったことです。

最初に基本クラスを作成し、ダイアログの静的宣言を作成します。

public class Dialogs {
    static Dialog dialog;

}

2 つ目は、カスタム ダイアログを配置することです。

public void customDialog(コンテキスト コンテキスト){ ダイアログ = 新しいダイアログ(コンテキスト);

    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 に答える