title: Android - how to use Spinner to hide/display View objects
body: <p>For an Android application, I'm trying to use a Spinner which, when an option is selected, will hide/display relevant View objects. For my application, these objects are an EditText and an associated TextView label for the field. Unfortunately, I can't seem to get the EditText to hide/display, and when I add it code to hide/display the TextView, I get a NullPointerException. I presume that since I am laying out the view objects in a RelativeLayout, by hiding one of the view objects, I am removing its relationship with other view objects, hence the NullPointer.</p>
  
  <p>Can anyone figure out why this might be happening?  Here's my code:</p>
  
  <pre><code>public class FormFields extends Activity {
      private Spinner mSpinner;
      private EditText mTextField;
      private TextView mLabel;
  
      private static final int SPINNER_OPTION_FIRST = 0;
      private static final int SPINNER_OPTION_SECOND = 1;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
  
          setContentView(R.layout.form_fields);
  
          mTextField = (EditText) findViewById(R.id.text_field);
          mLabel = (TextView) findViewById(R.id.field_label)
          mSpinner = (Spinner) findViewById(R.id.spinner);
  
          ArrayAdapter adapter1 = ArrayAdapter.createFromResource(
              this, R.array.spinnerOptions, android.R.layout.simple_spinner_item);
          adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
          mSpinner.setAdapter(adapter1);
  
          mSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
              @Override
              public void onItemSelected(AdapterView&lt;?&gt; parentView, View selectedItemView, int position, long id) {
                  switch(position) {
                      case SPINNER_OPTION_FIRST: {
                          mLabel.setVisibility(View.GONE);
                          mTextField.setVisibility(View.GONE);
                      }
                      case SPINNER_OPTION_SECOND: {
                          mLabel.setVisibility(View.VISIBLE);
                          mTextField.setVisibility(View.VISIBLE);
                      }
                  }
              }
  
              @Override
              public void onNothingSelected(AdapterView&lt;?&gt; parentView) {
                  // Do nothing
              }
          });
      }
  }
  </code></pre>
  
  <p>form_fields.xml</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"&gt;
  
      &lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:background="#104667"&gt;
  
          &lt;TextView
              android:id="@+id/spinner_label"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_centerHorizontal="true"
              android:layout_marginTop="15dip"
              android:textStyle="bold"
              android:text="Please select an option" /&gt;
  
          &lt;Spinner
              android:id="@+id/spinner"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:layout_below="@+id/spinner_label"
              android:layout_marginLeft="25dip"
              android:layout_marginRight="25dip"
              android:drawSelectorOnTop="true"
              android:prompt="@string/spinnerPrompt" /&gt;
  
          &lt;TextView
              android:id="@+id/field_label"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_below="@+id/spinner"
              android:layout_centerHorizontal="true"
              android:layout_marginTop="15dip"
              android:textStyle="bold"
              android:text="Enter text here: "
              android:visibility="gone" /&gt;
  
          &lt;EditText
              android:id="@+id/text_field"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:layout_marginLeft="25dip"
              android:layout_marginRight="25dip"
              android:layout_below="@+id/field_label" 
              android:visibility="gone" /&gt;
      &lt;/RelativeLayout&gt;
  &lt;/ScrollView&gt;
  </code></pre>