2013-02-28 24 views
0

我試着去創建一個對話框,它的工作原理只是當我嘗試添加該部分的ListView列表視圖的NullPointerException內onCreateDialogView

protected View onCreateDialogView() { 
    LayoutInflater inflater = ((SettingsActivity) ctx).getLayoutInflater(); 
    View vw = inflater.inflate(R.layout.channel_content_view, null); 
    ListView lv = (ListView) vw.findViewById(android.R.id.list); 
    Log.i("DIALOG", lv.toString()); ---- **RIGHT HERE IT BREAKS at com.example.tvrplayer.ChannelsDialogPreference.onCreateDialogView(ChannelsDialogPreference.java:56)** 
    return vw; 
} 

如果我刪除列表視圖位,它的工作原理,並顯示空對話框。

channel_content_view.xml

<LinearLayout 
    android:id="@+id/channels_list" 
    android:layout_height="fill_parent"  
    android:layout_width="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal">  

</LinearLayout> 

堆棧跟蹤

02-28 13:37:15.768: E/AndroidRuntime(24732): FATAL EXCEPTION: main 
02-28 13:37:15.768: E/AndroidRuntime(24732): java.lang.NullPointerException 
02-28 13:37:15.768: E/AndroidRuntime(24732): at com.example.tvrplayer.ChannelsDialogPreference.onCreateDialogView(ChannelsDialogPreference.java:56) 
02-28 13:37:15.768: E/AndroidRuntime(24732): at android.preference.DialogPreference.showDialog(DialogPreference.java:285) 
02-28 13:37:15.768: E/AndroidRuntime(24732): at android.preference.DialogPreference.onClick(DialogPreference.java:264) 
02-28 13:37:15.768: E/AndroidRuntime(24732): at android.preference.Preference.performClick(Preference.java:939) 
02-28 13:37:15.768: E/AndroidRuntime(24732): at android.preference.PreferenceScreen.onItemClick(PreferenceScreen.java:202) 
02-28 13:37:15.768: E/AndroidRuntime(24732): at android.widget.AdapterView.performItemClick(AdapterView.java:292) 
02-28 13:37:15.768: E/AndroidRuntime(24732): at android.widget.AbsListView.performItemClick(AbsListView.java:1173) 
02-28 13:37:15.768: E/AndroidRuntime(24732): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2701) 
02-28 13:37:15.768: E/AndroidRuntime(24732): at android.widget.AbsListView$1.run(AbsListView.java:3453) 
02-28 13:37:15.768: E/AndroidRuntime(24732): at android.os.Handler.handleCallback(Handler.java:605) 
02-28 13:37:15.768: E/AndroidRuntime(24732): at android.os.Handler.dispatchMessage(Handler.java:92) 
02-28 13:37:15.768: E/AndroidRuntime(24732): at android.os.Looper.loop(Looper.java:137) 
02-28 13:37:15.768: E/AndroidRuntime(24732): at android.app.ActivityThread.main(ActivityThread.java:4514) 
02-28 13:37:15.768: E/AndroidRuntime(24732): at java.lang.reflect.Method.invokeNative(Native Method) 
02-28 13:37:15.768: E/AndroidRuntime(24732): at java.lang.reflect.Method.invoke(Method.java:511) 
02-28 13:37:15.768: E/AndroidRuntime(24732): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) 
02-28 13:37:15.768: E/AndroidRuntime(24732): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 
02-28 13:37:15.768: E/AndroidRuntime(24732): at dalvik.system.NativeStart.main(Native Method) 
+1

我找不到channel_content_view.xml定義的任何列表視圖..這可能b以供空指針可能的原因。 – Rahil2952 2013-02-28 11:48:33

+0

對不起,我看到了。我現在添加它 – Harry 2013-02-28 11:53:45

回答

2

您的佈局沒有任何的ListView。

添加一個到你的LinearLayout中,給它一個ID,並用它來找到的ListView LV

+0

哦,這使得sence,讓我試試 – Harry 2013-02-28 11:50:57

+0

它會是ListView lv =(ListView)vw.findViewById(R.id.list);如果我使用ID列表在LinearLayout中創建一個listview? – Harry 2013-02-28 11:53:29

+0

使用R.id.your_given_id,所以你確定你得到了正確的列表。在ListActivitys中,您可以使用Android.r ...一個,但是您仍然必須將其作爲Id提供給ListView。 – 2013-02-28 11:54:51