我有一个黑莓应用程序,它基本上会对我输入的信息进行选择查询,所以如果我输入"5",它会进行select * from table where id=5
,这样我就能返回结果。然而,该子句的else语句应该返回"未找到结果"。张贴在下面的代码:
public void onResponse(String data, int code) {
final Vector vehicleInfo = jasonParser.parseVechicleResponse(data);
if(vehicleInfo.size() > 0 ){
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
removeLoader();
UiApplication.getUiApplication().pushScreen(new VehicleSearchResultScreen(etfVehicleInfo.getText(),vehicleInfo));
}
});
}else{
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
removeLoader();
Dialog.alert("No Results found.");
}
});
}
}
此代码的问题在于,如果vehicleinfo.size() = 0
-this-else语句不运行。运行的代码是下面发布的代码,这是我的错误代码。它应该在发生收集错误时被调用。因此,基本上,当没有找到一条记录时,它会显示连接错误的字符串,我根本无法理解为什么这个else语句没有运行;还是它运行了,并且被下面的语句超过了?
public void onError(final String data, int code) {
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
removeLoader();
Dialog.alert("No Results Found!");
}
});
}
分析代码
public Vector parseVehicleResponse(String response){
Vector vector = new Vector();
try{
JSONObject jsonVehicleObject = new JSONObject(response);
VehicleObject vehicle = new VehicleObject();
vehicle.setChassisNum(jsonVehicleObject.getString("chassis_no"));//chassis_num
vehicle.setEngineNum(jsonVehicleObject.getString("engine_no"));//engine_num
vector.addElement(vehicle);
}catch(Exception e){
System.out.println("JSONResponseParser.parseNewsHeadlines() " + e );
}
return vector;
}
}
Json
// Return encoded with JSON
$result = array(
"chassis_no"=>$chassis_no,
"engine_no"=>$engine_no,
);
在我看来,您的jasonParser.parseVechicleResponse(data);
调用抛出了一个错误,并且您永远无法访问if
语句。可能是打字错误吗?你是说吗
parseVehicleResponse
而不是
parseVechicleResponse
(不是额外的"c")??
为了保持思想流的分离,我在这里开始了一个新的答案。。。您可以尝试通过添加"伪元素零"来修改parseVehicleResponse
的代码,如下所示:
public Vector parseVehicleResponse(String response){
Vector vector = new Vector();
VehicleObject vehicle = new VehicleObject(); // create a "dummy object"
vehicle.setChassisNum("-1"); // initialize members - with "valid" data...
vehicle.setEngineNum("-1"); // again - make it valid type, but otherwise "wrong"
vector.addElement(vehicle); // the vector now has at least one element
// here comes your original code:
try{
JSONObject jsonVehicleObject = new JSONObject(response);
VehicleObject vehicle = new VehicleObject();
vehicle.setChassisNum(jsonVehicleObject.getString("chassis_no"));//chassis_num
vehicle.setEngineNum(jsonVehicleObject.getString("engine_no"));//engine_num
vector.addElement(vehicle);
}catch(Exception e){
System.out.println("JSONResponseParser.parseNewsHeadlines() " + e );
}
return vector;
}
现在,在主循环中,你做这样的事情:
Public void onResponse(String data, int code) {
final Vector vehicleInfo = jasonParser.parseVechicleResponse(data);
if(vehicleInfo.size() > 1 ){
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
removeLoader();
// { add some code to strip the zero-th element from vehicleInfo() }
UiApplication.getUiApplication().pushScreen(new VehicleSearchResultScreen(etfVehicleInfo.getText(),vehicleInfo));
}
});
}else{
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
removeLoader();
Dialog.alert("No Results found.");
}
});
}
}
这将进一步缩小对问题的搜索范围。。。