title: Unfortunately Sunshine app is not working
body: <p>I was just going through udacity sunshine app and I not able to resolve this problem i.e. after adding the openweather api the app is not working it just shows "Unfortunately Sunshine app is not working"</p>
  
  <p>the MainActivity.java file is as follow:</p>
  
  <pre><code>package com.example.android.sunshine.app;
  
  import android.os.Bundle;
  import android.support.design.widget.FloatingActionButton;
  import android.support.design.widget.Snackbar;
  import android.support.v7.app.AppCompatActivity;
  import android.support.v7.widget.Toolbar;
  import android.view.View;
  import android.view.Menu;
  import android.view.MenuItem;
  
  public class MainActivity extends AppCompatActivity
  {
  
  @Override
  protected void onCreate(Bundle savedInstanceState)
      {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
      setSupportActionBar(toolbar);
  
      FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
      fab.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
              Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                      .setAction("Action", null).show();
  
          }
      });
      }
  
  @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);
      }
  }
  </code></pre>
  
  <p>the MainActivityFragment.java file is as follow:</p>
  
  <pre><code>package com.example.android.sunshine.app;
  
  import android.support.v4.app.Fragment;
  import android.os.Bundle;
  import android.util.Log;
  import android.view.LayoutInflater;
  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;
  
  /**
   * A placeholder fragment containing a simple view.
   */
  public class MainActivityFragment extends Fragment {
  
  public MainActivityFragment() {
  }
  
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
                           Bundle savedInstanceState) {
      View rootView=inflater.inflate(R.layout.fragment_main, container, false);
  
     String[] forecastArray={
              "Today-Sunny-88/63",
              "Tomorrow-Foggy-70/40",
              "Weds-Cloudy-72/63",
              "Thurs-Asteroids-75/65",
              "Fri-Heavy Rain-65/56",
              "Sat-HELP-60/51",
              "Sun-Sunny-80/68"
      };
  
      List&lt;String&gt; weekForecast=new ArrayList&lt;String&gt;(Arrays.asList(forecastArray));
  
      ArrayAdapter&lt;String&gt; mForecastAdapter = new ArrayAdapter&lt;String&gt;(getActivity(),R.layout.list_item_forecast,R.id.list_item_forecast_textview,weekForecast);
      ListView lv=(ListView) rootView.findViewById(R.id.list_view_forecast);
      lv.setAdapter(mForecastAdapter);
  
  
      // 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=London&amp;mode=json&amp;units=metric&amp;cnt=7&amp;appid=d0657975451a7efca018097b88c4d975");
  
  
          // 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;
  
  }
  }
  </code></pre>