通常我会在每个活动(Android)中进行比较,但我遇到了问题而无法找到解决方案。我尽我所能,但结果仍然是一样的。
if if语句null
值似乎不为null。
我做错了什么?
以下是代码:
System.out.println(item.getSub()); // output is null
if (item.getSub()!=null) {
r.putExtra("engsub", item.getSub()); // Normally it shouldn't, but it goes in here
startActivityForResult(r, position);
}
else {
//Do something
}
我试过这个:
String def = item.getSub()+"";
System.out.println(def); // output is not null
if (!def.equals("")) {
r.putExtra("engsub", item.getSub()); // Normally it shouldn't, but it goes in here
startActivityForResult(r, position);
}
else {
//Do something
}
已添加:
JSONArray jsonResponse = new JSONArray(result);
asd = new String[5][jsonResponse.length()];
rowItems = new ArrayList<RowItem2>();
for (int i = 0; i < jsonResponse.length(); i++) {
JSONObject js = jsonResponse.getJSONObject(i);
// ....codes
asd[4][i] = js.getString("engsub");;
item = new RowItem2(asd[0][i], asd[1][i], asd[2[i],
asd[3][i],asd[4][i]);
rowItems.add(item);
}
RowItem2类
private String engsub;
public RowItem2(String title, String desc,String desc2,String desc3,String engsub) {
this.engsub = engsub;
//......
}
//.......
public String getSub() {
return engsub;
}
public void setSub(String engsub) {
this.engsub = engsub;
}
答案 0 :(得分:2)
我认为JSON字符串result
包含单词&#34; NULL&#34;在它。
查看有关JSONObject on Android Developer site的文档。
以下是解决问题的方法:
当请求的类型是String时,其他非空值将是 使用valueOf(Object)强制执行。虽然无法强制null,但是 sentinel值NULL被强制转换为字符串&#34; null&#34;。
在尝试追踪这样的问题时,有些想法如下:
你听起来很困惑,所以请放心吧。 Java / Android没有任何问题。通过每次都能正常工作的更改进行确认。
此更改会对您的假设提出质疑:您认为item.getSub()
正在返回null
。
String nullString = null;
System.out.println(nullString);
if (nullString != null) {
r.putExtra("engsub", item.getSub()); // Normally it shouldn't, but it goes in here
startActivityForResult(r, position);
}
else {
//Do something
}
除非您的IDE出现问题,否则不会通过if
测试。
您可能仍然认为自己正在获得null
。在某些情况下,它可能看起来像这样。
有时Eclipse不会将正确的代码放到您的模拟器/设备上。构建可能存在问题。
所以做一个项目清洁。然后重新构建并测试。
这将确认您运行的是正确的代码。
有时输出看起来像&#34;&#34;字符串,它可以是&#34; &#34;或&#34; &#34;
尝试记录[和]包围的输出。
System.out.println("[" + item.getSub() + "]");
这就是为什么我要求查看item.getSub()
代码,以及您展示的额外代码。
如果上述测试没有帮助,请查看如何设置/返回该值。
展望JSONObject.getString()
javadoc,表明它无法返回null
值:
在您的情况下,注销JSON字符串,并在RowItem2
构造函数中注销值。
这应该显示&#34; NULL&#34;我在这个答案的顶部提到。
答案 1 :(得分:1)
试试这个,
if(!"".equals(your string)
{
// do something
}
答案 2 :(得分:1)
你可以尝试:
if (item.getSub() instanceof String) {
r.putExtra("engsub", item.getSub()); // Normally it shouldn't, but it goes in here
startActivityForResult(r, position);
}
else {
//Do something
}
这样您就可以确定item.getSub()是一个字符串。