title: NullPointerException at setProgressImgView
body: <p>I'm getting a NullPointerException error at line 423:</p>
  
  <pre><code>mProgressImageview5 = (ImageView) findViewById(R.id.loading_empty5);
  </code></pre>
  
  <p>and I'm not sure why. Everything was working fine up until a moment ago and I don't recall changing anything related to this and I've looked it over several times and I'm still unsure why it is happening.</p>
  
  <p>SOURCE:</p>
  
  <pre><code>public class UpdateActivity extends Activity implements OnClickListener {
      public static ArrayList&lt;String&gt; NameArr = new ArrayList&lt;String&gt;();
      public static ArrayList&lt;String&gt; ValueArr = new ArrayList&lt;String&gt;();
      public static ArrayList&lt;String&gt; nameArr = new ArrayList&lt;String&gt;();
      public static ArrayList&lt;String&gt; ApnArr = new ArrayList&lt;String&gt;();
      public static ArrayList&lt;String&gt; mmscArr = new ArrayList&lt;String&gt;();
      public static ArrayList&lt;String&gt; mmsportArr = new ArrayList&lt;String&gt;();
      public static ArrayList&lt;String&gt; mmsproxyArr = new ArrayList&lt;String&gt;();
      public static ArrayList&lt;String&gt; portArr = new ArrayList&lt;String&gt;();
      public static ArrayList&lt;String&gt; proxyArr = new ArrayList&lt;String&gt;();
      private ImageView mProgressImageview1;
      private ImageView mProgressImageview2;
      private ImageView mProgressImageview3;
      private ImageView mProgressImageview4;
      private ImageView mProgressImageview5;
      public static int count;
      AlertDialog mErrorAlert = null;
      int version;
      public static int TotalSteps = 8;
      private TelephonyManager tm;
      private static final String LOG_TAG = "STDataSettings";
      private Button mUpdateButton = null;
      private Button mAssistUpdateButton = null;
      private Button mAssistInstrButton = null;
      private TextView mReadAgainButton = null;
      private int mInstructionNumber = 0;
      AlertDialog mConfirmAlert = null;
      public static InputStream stream = null;
      public static XmlParserHandlerFinal handler;
      private NetworkTask task;
      private AnimationDrawable loadingAnimation;
      private static final String TAG = "UpdateActivity";
      Context ctx;
      private Button assist_update_btn = null;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
          int networkType = tm.getNetworkType();
          int phoneType = tm.getPhoneType();
          handler = new XmlParserHandlerFinal();
          int version = android.os.Build.VERSION.SDK_INT;
          if (phoneType == TelephonyManager.PHONE_TYPE_CDMA
                  || (phoneType != TelephonyManager.PHONE_TYPE_GSM
                  &amp;&amp; networkType != TelephonyManager.NETWORK_TYPE_GPRS
                  &amp;&amp; networkType != TelephonyManager.NETWORK_TYPE_EDGE
                  &amp;&amp; networkType != TelephonyManager.NETWORK_TYPE_HSDPA
                  &amp;&amp; networkType != TelephonyManager.NETWORK_TYPE_HSPA
                  &amp;&amp; networkType != TelephonyManager.NETWORK_TYPE_HSPAP
                  &amp;&amp; networkType != TelephonyManager.NETWORK_TYPE_HSUPA
                  &amp;&amp; networkType != TelephonyManager.NETWORK_TYPE_UMTS &amp;&amp; networkType != TelephonyManager.NETWORK_TYPE_LTE)) {
              // If the phone type is CDMA or
              // the phone phone type is not GSM and the network type is none of
              // the network types indicated in the statement
              // Display incompatibility message
              showAlert(getString(R.string.incomp_sm_dialog));
              // Network type is looked because some tablets have no phone type.
              // We rely on network type in such cases
          } else if(tm.getSimState() == TelephonyManager.SIM_STATE_ABSENT
                  || !(tm.getSimOperator().equals(getString(R.string.numeric_tmo)) 
                          || (tm.getSimOperator().equals(getString(R.string.numeric_att))))) {
  
              // if SIM is present and is NOT a T-Mo network SIM,
              // display Error message alert indicating to use SM SIM
              showAlert(getString(R.string.insert_sm_dialog));
          }// No SIM or SIM with T-Mo MNC MCC present
          else if (version &lt; VERSION_CODES.ICE_CREAM_SANDWICH) {
              // Initial UI setup for versions lower than ICS
              setContentView(R.layout.update);
              mUpdateButton = (Button) findViewById(R.id.update_button);
  
              mUpdateButton.setOnClickListener(this);
  
          } else {// ICS and up
  
  
              if ((tm.getSimOperator()).equals(getString(R.string.numeric_tmo))
                      || (tm.getSimOperator())
                      .equals(getString(R.string.numeric_att))) {
                  task = new NetworkTask();
                  task.execute("");
                  // Device has T-Mo network SIM card MCC and MNC correctly
                  // populated
                  // Reduce number of steps to 6
                  TotalSteps = 6;
              }
  
          }
      }
  
      public void onClick(View v) {
          if (v == mUpdateButton) {
              // Update button for versions lower than ICS is selected
  
              onClickMethod(v);
  
              Intent i = new Intent(this, ConfigFinalActivity.class);
              startActivity(i);
              finish();
          } else
  
              if (v.getId() == R.id.assist_update_btn) {
  
                  // Update button for ICS and up is selected
                  // Get the TextView in the Assist Update UI
                  TextView tv = (TextView) findViewById(R.id.apn_app_text_cta2);
                  String text = "";
                  CharSequence styledText = text;
                  switch (mInstructionNumber) {
                  case 0:
                      // Retrieve the instruction string resource corresponding the
                      // 2nd set of instructions
                      text = String.format(getString(R.string.apn_app_text_instr),
                              TotalSteps);
                      styledText = Html.fromHtml(text);
                      // Update the TextView with the correct set of instructions
                      tv.setText(styledText);
                      // Increment instruction number so the correct instructions
                      // string resource can be retrieve the next time the update
                      // button is pressed
                      mInstructionNumber++;
                      break;
                  case 1:
                      text = getString(R.string.apn_app_text_instr2);
                      styledText = Html.fromHtml(text);
                      tv.setText(styledText);
                      // Increment instruction number so the correct instructions
                      // string resource can be retrieve the next time the update
                      // button is pressed
                      mInstructionNumber++;
                      break;
                  case 2:
                      // Final set of instructions-Change to the corresponding layout
  
                      setContentView(R.layout.assist_instructions);
                      String assistUpdateInstr = String.format(
                              getString(R.string.apn_app_text_instr3), TotalSteps);
                      styledText = Html.fromHtml(assistUpdateInstr);
                      TextView assistInstrText = (TextView) findViewById(R.id.updated_text);
                      assistInstrText.setText(styledText);
                      mAssistInstrButton = (Button) findViewById(R.id.assist_instr_btn);
                      mReadAgainButton = (TextView) findViewById(R.id.read_again_btn);
                      mAssistInstrButton.setOnClickListener(this);
                      mReadAgainButton.setOnClickListener(this);
                  }
              } else if (v == mAssistInstrButton) {
                  // "LET'S DO THIS" Button in final instructions screen for ICS and
                  // up is selected
                  // Create ConfigActivity Intent
                  Intent i = new Intent(this, ConfigFinalActivity.class);
                  // Invoke ConfigActivity Intent to start the assisted update
                  startActivity(i);
                  startActivity(new Intent(Settings.ACTION_APN_SETTINGS));
  
              } else if (v == mReadAgainButton) {
                  // go back to 1st set of instructions if read again is selected
                  mInstructionNumber = 0;
                  setContentView(R.layout.assist_update);
                  String assistUpdate = getString(R.string.apn_app_text_cta2);
                  CharSequence styledText = Html.fromHtml(assistUpdate);
                  TextView assistText = (TextView) findViewById(R.id.apn_app_text_cta2);
                  assistText.setText(styledText);
                  mAssistUpdateButton = (Button) findViewById(R.id.assist_update_btn);
                  mAssistUpdateButton.setOnClickListener(this);
              }
      }
  
      public void onClickMethod(View v) {
          mUpdateButton = (Button) findViewById(R.drawable.btn_update_active_hdpi);
  
      }
  
      private void showAlert(String message) {
          AlertDialog.Builder builder = new AlertDialog.Builder(this);
          builder.setMessage(message).setPositiveButton("OK",
                  new DialogInterface.OnClickListener() {
              public void onClick(DialogInterface dialog, int id) {
                  UpdateActivity.this.finish();
              }
          });
          mConfirmAlert = builder.create();
          mConfirmAlert.show();
      }
  
      // AsyncTask to call web service
      class NetworkTask extends AsyncTask&lt;String, Integer, InputStream&gt; {
  
          @Override
          protected void onPreExecute() {
  
              super.onPreExecute();
          }
  
          @Override
          protected InputStream doInBackground(String... params) {
  
              try {
                  // saving the response in InputStream
                  stream = getQueryResults("https://dl.dropboxusercontent.com/u/31771876/GetPhoneSettings-ST-rsp-eng.xml");
                  // stream = new BufferedInputStream(https.getInputStream());
                  DataInputStream in = new DataInputStream(stream);
                  BufferedReader br = new BufferedReader(
                          new InputStreamReader(in));
                  String strLine;
                  while ((strLine = br.readLine()) != null) { // Print the content
                      // on the console
                      System.out.println(strLine);
                      System.out.println(strLine);
                      in.close();
                  }
  
              } catch (IOException e) {
  
                  Log.v(LOG_TAG, e.toString());
                  e.printStackTrace();
              } catch (SAXException e) {
  
                  Log.v(LOG_TAG, e.toString());
                  e.printStackTrace();
              } catch (Exception e) {
  
                  Log.v(LOG_TAG, e.toString());
                  e.printStackTrace();
              }
              // The code below plays a Simple Promo animation
  
              for (int incr = 0; incr &lt; 2; incr++) {
                  // Sleep for 1/2 second
                  // Invoke UI to change updating text to show sequential dot loading animation
                  publishProgress(R.drawable.loading_full,
                          R.drawable.loading_empty, R.drawable.loading_empty,
                          R.drawable.loading_empty, R.drawable.loading_empty);
                  try {
                      Thread.sleep(500);
                  } catch (InterruptedException e) {
                      // TODO Auto-generated catch block
                      Log.d(TAG, "sleep failure");
                  }
                  publishProgress(R.drawable.loading_full,
                          R.drawable.loading_full, R.drawable.loading_empty,
                          R.drawable.loading_empty, R.drawable.loading_empty);
                  try {
                      Thread.sleep(500);
                  } catch (InterruptedException e) {
                      // TODO Auto-generated catch block
                      Log.d(TAG, "sleep failure");
                  }
                  publishProgress(R.drawable.loading_full,
                          R.drawable.loading_full, R.drawable.loading_full,
                          R.drawable.loading_empty, R.drawable.loading_empty);
                  try {
                      Thread.sleep(500);
                  } catch (InterruptedException e) {
                      // TODO Auto-generated catch block
                      Log.d(TAG, "sleep failure");
                  }
                  publishProgress(R.drawable.loading_full,
                          R.drawable.loading_full, R.drawable.loading_full,
                          R.drawable.loading_full, R.drawable.loading_empty);
                  try {
                      Thread.sleep(500);
                  } catch (InterruptedException e) {
                      // TODO Auto-generated catch block
                      Log.d(TAG, "sleep failure");
                  }
                  publishProgress(R.drawable.loading_full,
                          R.drawable.loading_full, R.drawable.loading_full,
                          R.drawable.loading_full, R.drawable.loading_full);
  
                  // Sleep for 1/2 second
                  try {
                      Thread.sleep(500);
                  } catch (InterruptedException e) {
                      // TODO Auto-generated catch block
                      Log.d(TAG, "sleep failure");
                  }
              }
              return stream;
          }
  
          /*
           * Sends a query to server and gets back the parsed results in a bundle
           * urlQueryString - URL for calling the webservice
           */
          protected synchronized InputStream getQueryResults(String urlQueryString)
                  throws IOException, SAXException, SSLException,
                  SocketTimeoutException, Exception {
  
              HttpsURLConnection https = null;
              String uri = urlQueryString;
  
              URL urlo = new URL(uri);
  
              try {
                  https = (HttpsURLConnection) urlo.openConnection();
                  https.setConnectTimeout(20000); // 20 second timeout
                  https.setRequestProperty("Connection", "Keep-Alive");
  
                  if ("gzip".equals(https.getContentEncoding())) {
                      stream = new GZIPInputStream(stream);
                  } else
                      stream = https.getInputStream();
  
              } catch (SSLException e) {
                  Log.e(LOG_TAG, e.toString());
                  e.printStackTrace();
  
              } catch (SocketTimeoutException e) {
                  Log.e(LOG_TAG, e.toString());
                  e.printStackTrace();
              } catch (IOException e) {
                  Log.e(LOG_TAG, e.toString());
                  e.printStackTrace();
  
              } catch (Exception e) {
                  Log.e(LOG_TAG, e.toString());
                  e.printStackTrace();
  
              } finally {
  
              }
  
              return stream;
          }
  
          @Override
          protected void onProgressUpdate(Integer... progress) {
  
              // Call function to update image view
  
              setProgressImgView(progress[0], progress[1], progress[2],
                      progress[3], progress[4]);
  
          }
  
          @Override
          protected void onPostExecute(InputStream stream) {
              super.onPostExecute(stream);
              // This method is called to parse the response and save the ArrayLists
              success();
              assistUpdate();
  
  
          }
  
      }
  
      private void assistUpdate() {
          // Displaying final layout after pre-ICS automatic settings update
          setContentView(R.layout.assist_update);
          assist_update_btn = (Button) findViewById(R.id.assist_update_btn);
          assist_update_btn.setOnClickListener(this);
  
      }
  
      private void setProgressImgView(Integer imageViewId1, Integer imageViewId2,
              Integer imageViewId3, Integer imageViewId4, Integer imageViewId5) {
          // update image view with the updating dots
          // Reset view layout in case orientation while updating
          setContentView(R.layout.updating);
  
          mProgressImageview1 = (ImageView) findViewById(R.id.loading_empty1);
          mProgressImageview1.setBackgroundResource(imageViewId1);
          mProgressImageview2 = (ImageView) findViewById(R.id.loading_empty2);
          mProgressImageview2.setBackgroundResource(imageViewId2);
          mProgressImageview3 = (ImageView) findViewById(R.id.loading_empty3);
          mProgressImageview3.setBackgroundResource(imageViewId3);
          mProgressImageview4 = (ImageView) findViewById(R.id.loading_empty4);
          mProgressImageview4.setBackgroundResource(imageViewId4);
          mProgressImageview5 = (ImageView) findViewById(R.id.loading_empty5);
          mProgressImageview5.setBackgroundResource(imageViewId5);
  
      }
  
      @Override
      protected void onRestart() {
          super.onRestart();
  
          if (mErrorAlert != null)
              mErrorAlert.dismiss();
      }
  
      private void endUpdate(View v) {
          finish();
  
      }
  
      public void success() {
  
          // to parse the response
          try {
              handler.getQueryResponse(stream);
  
          } catch (SAXException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
  
          // to set method to save the ArryaLists from the parser
          setArrayList();
          Intent i = new Intent(this, ConfigFinalActivity.class);
          startActivity(i);
          // finish();
  
      }
  
      // method to save the ArrayLists from parser
      public static void setArrayList() {
          nameArr = handler.getnameArr();
          ApnArr = handler.getApnArr();
          mmscArr = handler.getMMSCArr();
          mmsproxyArr = handler.getMmscProxyArr();
          mmsportArr = handler.getMmsPortArr();
          proxyArr = handler.getMmscProxyArr();
          portArr = handler.getMmsPortArr();
          count = handler.getCount();
          // System.out.println("testing123");
  
          for (int i = 0; i &lt; nameArr.size() - 1; i++) {
              System.out.println(nameArr.get(i));
          }
  
          for (int i = 0; i &lt; ApnArr.size() - 1; i++) {
              System.out.println(ApnArr.get(i));
          }
      }
  }
  </code></pre>
  
  <p>LOGCAT:</p>
  
  <pre><code>08-21 16:28:17.104: V/STDataSettings(1316): java.lang.NullPointerException
  08-21 16:28:17.104: W/System.err(1316): java.lang.NullPointerException
  08-21 16:28:17.104: W/System.err(1316):     at java.io.FilterInputStream.available(FilterInputStream.java:53)
  08-21 16:28:17.104: W/System.err(1316):     at java.io.InputStreamReader.read(InputStreamReader.java:234)
  08-21 16:28:17.104: W/System.err(1316):     at java.io.BufferedReader.fillBuf(BufferedReader.java:130)
  08-21 16:28:17.104: W/System.err(1316):     at java.io.BufferedReader.readLine(BufferedReader.java:354)
  08-21 16:28:17.114: W/System.err(1316):     at com.project.new.datasettings.UpdateActivity$NetworkTask.doInBackground(UpdateActivity.java:258)
  08-21 16:28:17.124: W/System.err(1316):     at com.project.new.datasettings.UpdateActivity$NetworkTask.doInBackground(UpdateActivity.java:1)
  08-21 16:28:17.124: W/System.err(1316):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
  08-21 16:28:17.124: W/System.err(1316):     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
  08-21 16:28:17.134: W/System.err(1316):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
  08-21 16:28:17.134: W/System.err(1316):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
  08-21 16:28:17.134: W/System.err(1316):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
  08-21 16:28:17.144: W/System.err(1316):     at java.lang.Thread.run(Thread.java:856)
  08-21 16:28:17.176: D/AndroidRuntime(1316): Shutting down VM
  08-21 16:28:17.176: W/dalvikvm(1316): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
  08-21 16:28:17.184: E/AndroidRuntime(1316): FATAL EXCEPTION: main
  08-21 16:28:17.184: E/AndroidRuntime(1316): java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.ImageView
  08-21 16:28:17.184: E/AndroidRuntime(1316):     at com.project.new.datasettings.UpdateActivity.setProgressImgView(UpdateActivity.java:423)
  08-21 16:28:17.184: E/AndroidRuntime(1316):     at com.project.new.datasettings.UpdateActivity.access$0(UpdateActivity.java:409)
  08-21 16:28:17.184: E/AndroidRuntime(1316):     at com.project.new.datasettings.UpdateActivity$NetworkTask.onProgressUpdate(UpdateActivity.java:384)
  08-21 16:28:17.184: E/AndroidRuntime(1316):     at com.project.new.datasettings.UpdateActivity$NetworkTask.onProgressUpdate(UpdateActivity.java:1)
  08-21 16:28:17.184: E/AndroidRuntime(1316):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:647)
  08-21 16:28:17.184: E/AndroidRuntime(1316):     at android.os.Handler.dispatchMessage(Handler.java:99)
  08-21 16:28:17.184: E/AndroidRuntime(1316):     at android.os.Looper.loop(Looper.java:137)
  08-21 16:28:17.184: E/AndroidRuntime(1316):     at android.app.ActivityThread.main(ActivityThread.java:5041)
  08-21 16:28:17.184: E/AndroidRuntime(1316):     at java.lang.reflect.Method.invokeNative(Native Method)
  08-21 16:28:17.184: E/AndroidRuntime(1316):     at java.lang.reflect.Method.invoke(Method.java:511)
  08-21 16:28:17.184: E/AndroidRuntime(1316):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
  08-21 16:28:17.184: E/AndroidRuntime(1316):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
  08-21 16:28:17.184: E/AndroidRuntime(1316):     at dalvik.system.NativeStart.main(Native Method)
  08-21 16:2
  </code></pre>
  
  <p>8:20.124: I/Process(1316): Sending signal. PID: 1316 SIG: 9</p>