下面的android代码块尝试从javascript函数获取返回值,然后将其分配给类变量,并在实例化另一个类后使用此类变量;
这是我的代码:
//class variables
String innerElementNum = "0";
private final Object lock = new Object();
MyAdapter myAdapter;
synchronized (lock) {
try {
webView.loadUrl("javascript:inner()");
while (responseFromJS.equals(""))
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
(!responseFromJS.equals("empty"))
innerElementNum = responseFromJS;
}
responseFromJS = "";
}
myAdapter = new MyAdapter(EditorActivity.this);
在MyAdapter类中,我使用变量“innerElementNum”,就像那样:
public class MyAdapter extends BaseAdapter {
Context context;
int itemsNum = Integer.parseInt(innerElementNum);
String[] itemsArray = new String[itemsNum];
MyAdapter(Context c){
context = c;
if (itemsNum > 0) {
for (int i=0 ; i<itemsNum ; i++) {
int j = i+1;
itemsArray[i] = j+"";
}
}
}
....... etc
}
我的问题是同步:当实例化MyAdapter类时,“innerElementNum”变量具有“未定义”值,我的意思是,当我实例化该类时,该变量尚未具有正确的值。
欢迎任何帮助。 提前致谢
答案 0 :(得分:1)
好“未定义”是特定于Javascript的。你几乎可以肯定解析一个看起来像
的json{
elementNum: "undefined"
}
这似乎与并发性没有任何关系。
当你说
时“undefined”值,我的意思是,当我实例化类时,变量 还没有正确的价值。
String num = "undefined"
在技术上是用Java分配的。我认为你需要修复构建这个json的Javascript。
另外作为旁注:
您不应该通过==
运算符测试字符串等效性。这测试参考等价而不是内容。您应该使用.equals