Javascript函数赢得';无法接收Android Java值

Javascript函数赢得';无法接收Android Java值,java,javascript,android,Java,Javascript,Android,我似乎无法让Android Java将值发送到我的webview中的Javascript。没有错误,只是不起作用。我对sharedprefs的第一次存储测试运行良好,只是将结果传递给Javascript失败。我尝试过其他方法,但也失败了。我花了将近一个月的时间在这上面,在这里搜索,读了很多书 我应该使用布尔值以外的值吗?我假设当Javascript得到结果时,它将是字符串格式 一定是我做错了什么。我需要更改/添加/删除什么才能使其正常工作 我的一些AndroidManifest.xml: <

我似乎无法让Android Java将值发送到我的webview中的Javascript。没有错误,只是不起作用。我对sharedprefs的第一次存储测试运行良好,只是将结果传递给Javascript失败。我尝试过其他方法,但也失败了。我花了将近一个月的时间在这上面,在这里搜索,读了很多书

我应该使用布尔值以外的值吗?我假设当Javascript得到结果时,它将是字符串格式

一定是我做错了什么。我需要更改/添加/删除什么才能使其正常工作

我的一些AndroidManifest.xml:

<uses-sdk
android:minSdkVersion="1"
android:targetSdkVersion="17" />
我的Check.java文件,它在sharedprefs中存储我想要的布尔值:

public class Check extends MainActivity {
Context rContext;
Check(Context d){
 rContext = d;
}
@JavascriptInterface
public void firstRunCheck(String key){
Boolean firstRunCheck = getSharedPreferences("PREFS", MODE_PRIVATE).getBoolean("firstRunCheck", true);

if (firstRunCheck) {
showAlert();  // this is a call to the showAlert() method.

getSharedPreferences("PREFS", MODE_PRIVATE).edit() 

.putBoolean("firstRunCheck", false).commit();
return;
}
}
}
我的Javascript函数应该获得Java结果:

Function FirstRunTest(){
var Result = Flex.firstRunCheck()
TextBox1.value = Result
}

你回来了。您需要更改Check.java文件中的方法定义以返回值

尝试:

在Javascript中,假设Flex.firstRunCheck返回布尔值:

Function FirstRunTest(){
  var Result = Flex.firstRunCheck();
  TextBox1.value = if(Result) ? "True" : "False";
}

到家后,我得试试。天哪,谢谢你花时间帮我解决这个问题,但不幸的是,它没有解决我的问题,还有一些问题。不过我确实从你的回答中学到了。我试着给你的答案投赞成票,但这要求我至少有15个声望,所以我的“非常感谢”就足够了。我决定从另一个角度来解决我的问题,这很酷。我刚注意到退票在支票上。我想,您需要将返回移动到方法的基本范围,以使其进行编译。此外,我不确定除了ADK之外,您使用的是什么框架。这可能有助于更快地得到答案。如果其他人也有类似的问题,那么代码无法工作的原因似乎是人为错误。我在一个类的底部有另一个名为“firstRunCheck”的方法,所以我没有看到它,因为它是空的/null并且还没有被调用,当值到达我的JavaScript函数的文本框时,它会显示为未定义。我重新命名了第二个firstRunCheck,并注释掉了第一个,所以现在一切都正常了。
public boolean firstRunCheck(){
  Boolean firstRunCheck = getSharedPreferences("PREFS", MODE_PRIVATE).getBoolean("firstRunCheck", true);

  if (firstRunCheck) {
    showAlert();  // this is a call to the showAlert() method.

    getSharedPreferences("PREFS", MODE_PRIVATE).edit() 
    .putBoolean("firstRunCheck", false).commit();
  }

  return firstRunCheck;
}
Function FirstRunTest(){
  var Result = Flex.firstRunCheck();
  TextBox1.value = if(Result) ? "True" : "False";
}