2015-04-06 49 views
0

我想在左側創建一個抽屜。在此期間,當我嘗試執行則給出了這樣的錯誤和應用程序崩潰:Android:null對象在onCreate方法返回列表視圖

造成的:顯示java.lang.NullPointerException:試圖調用虛擬方法無效android.widget.ListView.setAdapter(機器人。上的空對象引用

這裏widget.ListAdapter)」是我的代碼: MainActivity.java

import android.os.Bundle; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarActivity; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 


public class MainActivity extends ActionBarActivity { 

private String items[];//={"Home","Profile","Requests","Notifications","Search","Track My Tifin","Settings"}; 
private DrawerLayout dl; 
private ListView listView; 
//ArrayAdapter<String> adapter; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    dl=(DrawerLayout)findViewById(R.id.drawerOnleft); 
    listView=(ListView) findViewById(R.id.list); 
    items=getResources().getStringArray(R.array.list_items); 

    //Set adapter for this list 
    listView.setAdapter(new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,items)); 
    setContentView(R.layout.drawer_ex); 
} 

}

drawer_ex.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout 
android:id="@+id/drawerOnleft" 
android:layout_height="match_parent" 
android:layout_width="match_parent" 
xmlns:android="http://schemas.android.com/apk/res/android"> 
<FrameLayout 
    android:id="@+id/mainView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"></FrameLayout> 
<ListView 
    android:id="@+id/list" 
    android:layout_width="240dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="left" 
    android:choiceMode="singleChoice" 
    android:divider="@android:color/transparent" 
    android:background="#33CCFF" 
    android:dividerHeight="0dp" 

    ></ListView> 

的strings.xml

<resources> 
<string name="app_name">MyDrawer</string> 

<string name="hello_world">Hello world!</string> 
<string name="action_settings">Settings</string> 
<string-array name="list_items"> 
    <item>Home</item> 
    <item>Profile</item> 
    <item>Requests</item> 
    <item>Notifications</item> 
    <item>Search</item> 
    <item>Track My Tifin</item> 
    <item>Settings</item> 
</string-array> 

提前感謝!

回答

1

在調用findviewbyId方法之前設置您的內容視圖。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
setContentView(R.layout.drawer_ex);  
dl=(DrawerLayout)findViewById(R.id.drawerOnleft); 
    listView=(ListView) findViewById(R.id.list); 
    items=getResources().getStringArray(R.array.list_items); 

    //Set adapter for this list 
    listView.setAdapter(new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,items)); 

} 
+0

Whoilaaa..thank you so much much @savepopulation。它演變得像魅力。但是我有一個問題,爲什麼當我最終設置了「setContentView(R.layout.drawer_ex)」時,它會拋出異常。你能解釋一下嗎?謝謝! – pritesh 2015-04-06 09:25:12

0

Whoilaaa..thank你這麼多@savepopulation。它演變得像魅力。 但我有一個問題,爲什麼當我設置 「setContentView(R.layout.drawer_ex)」時,它拋出異常。你能解釋一下 更多嗎?謝謝

設置佈局資源的活動內容。資源將被誇大,將所有頂級視圖添加到活動中。

資源膨脹後您只能查找查看。這就是爲什麼你的findViewByID返回null,因爲android無法找到資源匹配。

+1

謝謝@ fukemy-fukemy..That對我真的很有幫助! – pritesh 2015-04-06 09:32:07