2016-03-18 31 views
0

Udacity'de Android Uygulamaları Geliştirme dersi için Sunshine Uygulamasını takip ediyorum. Bir sebepten dolayı, bu bir hata olarak görünüyor ve hiçbir yerde bir çözüm bulamadım.HttpURLConnection urlConnection = null; (Hata)

Bu ifade neden ulaşılamaz?

HttpURLConnection urlConnection = null; 

MainActivity Kodu:

package com.example.android.sunshine.app; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v7.app.ActionBarActivity; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.URL; 
import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 


public class MainActivity extends ActionBarActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    if (savedInstanceState == null) { 
     getSupportFragmentManager().beginTransaction() 
       .add(R.id.container, new PlaceholderFragment()) 
       .commit(); 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

/** 
* A placeholder fragment containing a simple view. 
*/ 
public static class PlaceholderFragment extends Fragment { 

    private ArrayAdapter<String> mForecastAdapter; 

    public PlaceholderFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_main, container, false); 

     String[] forecastArray = { 
       "Today - Sunny - 66/73", 
       "Tomorrow - Sunny - 65/71", 
       "Sunday - Rainy - 59/66", 
       "Monday - Cloudy - 59/65", 
       "Tuesday - Cloudy - 60/66", 
       "Wednesday - Sunny - 61/68", 
       "Thursday - Sunny - 62/70" 
     }; 

     List<String> weekForecast = new ArrayList<>(Arrays.asList(forecastArray)); 

     mForecastAdapter = new ArrayAdapter<>(
       // The current context (this fragment's parent) 
       getActivity(), 
       // ID of list item layout 
       R.layout.list_item_forecast, 
       // ID of the textView to populate 
       R.id.list_item_forecast_textview, 
       // Forecast data 
       weekForecast); 

     ListView listView = (ListView) rootView.findViewById(
       R.id.listview_forecast); 
     listView.setAdapter(mForecastAdapter); 

     return rootView; 

     // These two need to be declared outside the try/catch 
     // so that they can be closed in the finally block. 
     HttpURLConnection urlConnection = null; 
     BufferedReader reader = null; 

     // Will contain the raw JSON response as a string. 
     String forecastJsonStr = null; 

     try { 
      // Construct the URL for the OpenWeatherMap query 
      // Possible parameters are avaiable at OWM's forecast API page, at 
      // http://openweathermap.org/API#forecast 
      URL url = new URL("http://api.openweathermap.org/data/2.5/forecast/daily?q=Uniontown&mode=xml&units=metric&cnt=7&appid="); 

      // Create the request to OpenWeatherMap, and open the connection 
      urlConnection = (HttpURLConnection) url.openConnection(); 
      urlConnection.setRequestMethod("GET"); 
      urlConnection.connect(); 

      // Read the input stream into a String 
      InputStream inputStream = urlConnection.getInputStream(); 
      StringBuffer buffer = new StringBuffer(); 
      if (inputStream == null) { 
       // Nothing to do. 
       return null; 
      } 
      reader = new BufferedReader(new InputStreamReader(inputStream)); 

      String line; 
      while ((line = reader.readLine()) != null) { 
       // Since it's JSON, adding a newline isn't necessary (it won't affect parsing) 
       // But it does make debugging a *lot* easier if you print out the completed 
       // buffer for debugging. 
       buffer.append(line + "\n"); 
      } 

      if (buffer.length() == 0) { 
       // Stream was empty. No point in parsing. 
       return null; 
      } 
      forecastJsonStr = buffer.toString(); 
     } catch (IOException e) { 
      Log.e("PlaceholderFragment", "Error ", e); 
      // If the code didn't successfully get the weather data, there's no point in attemping 
      // to parse it. 
      return null; 
     } finally{ 
      if (urlConnection != null) { 
       urlConnection.disconnect(); 
      } 
      if (reader != null) { 
       try { 
        reader.close(); 
       } catch (final IOException e) { 
        Log.e("PlaceholderFragment", "Error closing stream", e); 
       } 
      } 
     } 

     return rootView; 
    } 
    } 
} 
+1

son satırı için olduğu gibi online olarak yayınladığınızda genellikle her zaman uygulamayı kaldırırsınız - lütfen gönderinizi düzenleyin. İkincisi, hata nerede gerçekleşiyor? Logcat çıktısını gönderebilir misin? Ayrıca, sadece genel olarak, Udacity'nin github'unun bir sonraki versiyonunu kontrol edebilir veya ileride zorluklarla karşılaşmanız halinde çözüm videosuna gidebilirsiniz, sadece – Christian

+0

deyin. Paket adı? Logcat'ı nasıl çalıştıracağından emin değilsiniz. Eğer – timmyspan

+0

'u çalıştırmayacaksa url dizgisinde adınız kaydedilecektir. Kaldırma ... – Christian

cevap

3

onCreateView() yöntemi

return rootview; 

koymak bu ifadeyi ulaştığında yürütme durur senin fonksiyonu

+0

HttpURLConnection urlConnection = null; (Neden ulaşılamıyor) – timmyspan

+0

geri dönüşü yürütmeyi durdurma hakkında daha fazla bilgi için bu http://www.java-samples.com/showtutorial.php?tutorialid=280 yorumuna bakın. dönüş kök görünümünü taşıdığımda – Shreyans

+0

şüpheleri; başka bir yerde, 'rootview' sembolünün çözümlenemediği yer şu andaki – timmyspan