Für eine Android-Anwendung versuche ich, einen Spinner zu verwenden, der bei Auswahl einer Option die entsprechenden View-Objekte ausblendet/anzeigt. Für meine Anwendung sind diese Objekte ein EditText und ein zugehöriges TextView-Label für das Feld. Leider scheine ich den EditText nicht zum Ausblenden/Anzeigen zu bringen, und wenn ich den Code zum Ausblenden/Anzeigen der TextView hinzufüge, erhalte ich eine NullPointerException. Ich vermute, dass, da ich die Ansichtsobjekte in einem RelativeLayout, durch Ausblenden eines der Ansichtsobjekte, ich seine Beziehung mit anderen Ansichtsobjekten, daher die NullPointer entfernen.
Kann jemand herausfinden, warum das passieren könnte? Hier ist mein 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<?> 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<?> parentView) {
// Do nothing
}
});
}
}
form_fields.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#104667">
<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" />
<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" />
<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" />
<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" />
</RelativeLayout>
</ScrollView>