2014-03-05 58 views
0

當我設置Ori(例如:Ori = "WSSS")使用getOrigin()顯示結果。但是當我設置Ori = Info[1]時,我不能撥打getOrigin()。我想用getOrigin()(不要設定值)來顯示結果。我不能在String.format上使用變量

在主

{  
      String user = "abc"; 
      String pw = "123"; 
      String url,url_origin; 
      String Info[],Origin[]={"",""}; 
      String Ori; 

      @SuppressLint("NewApi") 
      @Override 
      protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.details_layout); 

      StrictMode.ThreadPolicy policy = new StrictMode. 
      ThreadPolicy.Builder().permitAll().build(); 
      StrictMode.setThreadPolicy(policy); 

      String ID = "HAAB"; 
      url = String.format("http://flightxml.flightaware.com/json/FlightXML2/InFlightInfo?ident=%s",ID); 

      getDetails(url); 
      Ori = Info[1]; 
      url_origin = String.format("http://flightxml.flightaware.com/json/FlightXML2/AirportInfo?airportCode=%s",Ori); 
      getOrigin(url_origin); 

      TextView fd1 = (TextView)findViewById(R.id.textView1); 
      fd1.setText(Origin[1]); 
    } 

    public String[] getDetails(String url) 
    { 
      try { 

       String result = HttpGet(url); 
       JSONObject json = new JSONObject(result); 
       JSONObject val = json.getJSONObject("InFlightInfoResult");  

       Info[0] += String.format("%s\n", val.getString("type")); 
       Info[1] += String.format("%s\n", val.getString("origin")); 


        } catch (JSONException e) { 
          e.printStackTrace(); 
        } 

         return Info; 
       } 

    public String[] getOrigin(String url) { 
      try { 

        String result = HttpGet(url); 
        JSONObject json = new JSONObject(result); 
        JSONObject val = json.getJSONObject("AirportInfoResult");  

        Origin[0] += String.format("%s\n", val.getString("name")); 
        Origin[1] += String.format("%s\n", val.getString("location")); 

         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 

         return Origin; 
       } 

      // Connect Http Get // 
       public String HttpGet(String url) { 
        StringBuilder builder = new StringBuilder(); 
        HttpClient client = new DefaultHttpClient(); 
        HttpGet httpGet = new HttpGet(url); 
        httpGet.addHeader("Authorization", "Basic " + Base64.encodeToString((user + ":" + pw).getBytes(), Base64.NO_WRAP)); 

        try { 
         HttpResponse response = client.execute(httpGet); 
         StatusLine statusLine = response.getStatusLine(); 
         int statusCode = statusLine.getStatusCode(); 
         if (statusCode == 200) { // Status OK 
          HttpEntity entity = response.getEntity(); 
          InputStream content = entity.getContent(); 
          BufferedReader reader = new BufferedReader(new InputStreamReader(content)); 
          String line; 
          while ((line = reader.readLine()) != null) { 
           builder.append(line); 
          } 
         } else { 
          Log.e("Log", "Failed to download result.."); 
         } 
        } catch (ClientProtocolException e) { 
         e.printStackTrace(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
        return builder.toString(); 
       }  } 
+0

發佈您的logCat –

+0

拋出「ArrayIndexOutOfBound」異常嗎? –

+0

@ user2310289 logCat Show 03-05 01:26:42.979:E/AndroidRuntime(1862):java.lang.RuntimeException:無法啓動活動ComponentInfo {com.example.travelapp/com.example.travelapp.Details}:java。 lang.IllegalArgumentException:在索引77查詢中的非法字符:http://flightxml.flightaware.com/json/FlightXML2/AirportInfo?airportCode=RJAA –

回答

1

你的變量Info[]聲明,但沒有初始化,不包含任何數據。

Ori = Info[1] 

無效!

你需要做一些類似於你在做的事情Origin在這一行。

String Info[],Origin[]={"",""}; 
+0

我試過了,但這不是工作 –

+0

你嘗試了什麼?你能粘貼你的代碼更改嗎? – Merlevede

+0

我改變了你的訪問信息[1]相同的Ori = Info [1],但當我用fd1.setText(Origin [1])調用它時出錯。 –