我想在java中制作一个确认功能,就像
javascript
中的警报一样。
示例 JavaScript 代码:
var a = prompt("");
在java中,我有一个函数,它返回带有对话框输入的字符串;
public static boolean log ;
public String value;
public String androidPrompt(){
log = true;
showMyDialog();
while(log){
}
return value;
}
public void showMyDialog(){
log= false;
value = //inputed value from dialog;
}
但是我的应用程序没有响应。我应该怎么办。我想暂停
androidPrompt()
而 showMyDialog()
尚未完成。当 showMyDialog()
完成后 androidPrompt()
函数将恢复并返回值
JavaScript 代码示例:var a =prompt("");
Android 不支持这种阻塞式 UI 调用。相反,当用户接受对话框(例如,按下“确定”按钮)时,使用侦听器来通知应用程序中的某些内容。
问题有点不清楚调用的调用位置。如果你想在 JavaScript 中执行 Java (android) 函数,那么你必须创建一个接口。
这是使用接口模拟 alert() 函数的示例。
public class JavaScriptInterface {
Context mContext;
JavaScriptInterface(Context c) {
mContext = c;
}
/** Show a toast from the web page */
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
//at the oncreate of your activity where webviews is being created
WebView myWebView = findViewById(R.id.sidmyWebView);
myWebView.addJavascriptInterface(new JavaScriptInterface(this), "Android"); //this name will be used in JS
myWebView.getSettings().setAllowFileAccess(true);
myWebView.clearCache(true); //temporary for css reload
WebSettings myWebSettings = myWebView.getSettings();
myWebSettings.setJavaScriptEnabled(true); //this enables js on this page
//now, in JS file execution, you can emulate the js alert function as
//alert("Show toast"); //this will not show anything, as you noted
Android.showToast("Calling Alert-show in Android WebView - Java/JavaScript"); //this will work