2014-03-05 59 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])调用它时出错。 –