私のアプリケーションでは、webview と通常の Android アプリケーションの両方に表示されるカスタマイズされたダイアログ ボックスを 1 つ作成しました。また、ダイアログ ボックスが表示されたときにバックグラウンド操作を行っています。また、いくつかの値を返します。webview + javainterface を使用すると完全に機能しますが、通常のアプリケーションでは機能しません。フローは次のとおりです。
最初に、いくつかのプロセスを実行した後、ダイアログを取得します(ここではメインスレッドが待機し、ダイアログを表示する必要があります)。次に、文字列を返します。問題は、この関数を呼び出したときにダイアログが表示されないことです。バックグラウンドプロセスが終了した後にダイアログが表示されます。
これを次のようなダイアログ ボックスと呼びます。
String sample=mydialog();
public String mydialog() {
String mystring = null;
try {
myactivity.this.runOnUiThread(ShowDialog);
while (customizeddialog.Getvalue() == null) {
}
mystring = customizeddialog.Getvalue();
customizeddialog.Setvalue(null);
} catch (Exception e) {
return mystring;
}
private Runnable ShowDialog = new Runnable() {
public void run() {
try {
customizeddialog m_dialog = new customizeddialog(myactivity.this);
m_dialog.setCancelable(false);
m_dialog.show();
} catch (Exception e) {
}
}
};