我正在尝试设置一个ViewFlipper,每次按下按钮时都会更改SlidingDrawers内容。到目前为止,我设置的每个视图都运行正常,但现在我正在尝试在ViewFlipper的子视图中创建ListView(包括single_choice_mode),但我的尝试只允许NullPointerException。因为我今天才发现ViewFlipper,我还不熟悉它,可能还没有完全理解它...如果有人能帮助我找出我做错了什么,那就太好了。
提前谢谢你。
这就是我所做的:
ImageButtons的onClick事件的代码:
public void onClick(View v) {
if (v == btnExposure) {
mFlipper.setDisplayedChild(0);
} else if (v == btnProperties) {
mFlipper.setDisplayedChild(1);
} else if (v == btnSpecialEffects) {
mFlipper.setDisplayedChild(2);
String[] specialEffects = getResources().getStringArray(R.array.special_effects_array);
lv.setAdapter(new ArrayAdapter < String > (this, R.layout.specialeffectsview, specialEffects));
lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
}
}
我的主xml文件中ViewFlipper的XML代码:
<ViewFlipper
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/flipper"
android:layout_toRightOf="@id/button_exposure">
<include android:id="@+id/view_exposure" layout="@layout/exposureview" />
<include android:id="@+id/view_properties" layout="@layout/propertiesview" />
<include android:id="@+id/view_special_effects" layout="@layout/specialeffectsview"/>
</ViewFlipper>
strings.xml中的字符串数组:
<string-array name="special_effects_array">
<item>None</item>
<item>Greyscale</item>
<item>Sepia</item>
<item>Negative</item>
<item>Solarize</item>
<item>Polarize</item>
</string-array>
最后是specialeffectsview.xml(ListView的布局文件):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/view_special_effects_list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<ListView android:id="@+id/special_effects_list"
android:layout_height="wrap_content"
android:layout_width="fill_parent"></ListView>
</LinearLayout>
答案 0 :(得分:0)
与discussed on the Android Google Groups when you inquired there一样,您的NullPointerException
是因为您的lv
变量为null
。您需要在null
之后的某个时刻调用lv=(ListView)findViewById(R.id.special_effects_list)
,而不是setContentView()
。