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;
}
}
}
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
deyin. Paket adı? Logcat'ı nasıl çalıştıracağından emin değilsiniz. Eğer – timmyspan
'u çalıştırmayacaksa url dizgisinde adınız kaydedilecektir. Kaldırma ... – Christian