For an Android application, I'm trying to use a Spinner which, when an option is selected, will hide/display relevant View objects. 对于我的应用程序,这些对象是字段的 EditText 和关联的 TextView 标签。不幸的是,我似乎无法让 EditText 隐藏/显示,当我添加代码来隐藏/显示 TextView 时,我得到了 NullPointerException。我假设由于我在 RelativeLayout 中布置视图对象,通过隐藏其中一个视图对象,我正在删除它与其他视图对象的关系,因此是 NullPointer。
谁能弄清楚为什么会发生这种情况?这是我的代码:
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>