-1

入力した情報に対して本質的に選択クエリを実行するブラックベリーアプリを持っているので、「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() = 0else ステートメントが実行されない場合です。実行されるコードは、私のエラー コードである以下に投稿されたコードです。コレクションエラーが発生したときに呼び出されるはずです。したがって、基本的に、レコードが見つからない場合、接続エラーの文字列が表示され、この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;
}

}

ジェイソン

  // Return  encoded with JSON
            $result = array(

    "chassis_no"=>$chassis_no,
   "engine_no"=>$engine_no,

 );
4

2 に答える 2

0

思考の流れを分離しておくために、ここで新しい回答を開始しています...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.");
            }
        });
    }
}

これにより、問題の検索がさらに絞り込まれます...

于 2013-02-07T02:37:57.547 に答える
0

あなたのjasonParser.parseVechicleResponse(data);呼び出しがエラーをスローしているように思えますが、ifステートメントに到達することはありません。それはタイプミスでしょうか?もしかして

parseVehicleResponse

それ以外の

parseVechicleResponse

(余分な「c」ではありません)??

于 2013-02-06T02:09:23.963 に答える