2013-02-10 94 views
0

我有一行代碼,當我調試nullpointerexception時,我可以看到它是導致我的應用程序崩潰的原因。代碼行未初始化導致nullpointerexecption

的是導致了空指針的代碼行是這樣的:

ListView storeList = (ListView) findViewById(R.id.storeList); 

,然後在調試模式下,它崩潰時它會嘗試分配此:

storeList.setAdapter(arrayAdapter2); 

我不知道爲什麼對象沒有初始化。它下面的ArrayAdapter初始化好。如果您

下面是實際的Java活動文件:

public class StoreListView extends Activity { 
UserFunctions userFunctions = new UserFunctions(); 
ArrayAdapter<String> arrayAdapter2; 
ArrayList<String> spinnerArray; 



protected void onCreate(Bundle savedInstanceState) { 
    ListView storeList = (ListView) findViewById(R.id.storeList); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.storelistviewpage); 
    arrayAdapter2 = new ArrayAdapter<String>(StoreListView.this,android.R.layout.simple_list_item_1); 
    spinnerArray = getIntent().getStringArrayListExtra("cusName"); 
    arrayAdapter2.addAll(spinnerArray); 
    storeList.setAdapter(arrayAdapter2); 
} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.activity_main_screen, menu); 
    return true; 
} 

} 

及以下這裏是xml文件:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<ListView 
    android:id="@+id/storeList" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal|center_vertical" > 

</ListView> 

編輯: 在情況下,一些想知道我加入活動到android mainfest

回答

5

移動

ListView storeList = (ListView) findViewById(R.id.storeList); 

setContentView()之後致電。

由於當前的代碼分配的findViewById()之前setContentView()被稱爲因此,您將永遠得到storeListnull,所以,你會得到一個NPE。

+0

這是完美的!我簡直不敢相信。我在想這是別的。一切都必須在這兩條線之後出現嗎? – Mark 2013-02-10 23:21:37

+0

@Mark自從'findViewById()'返回你想要的視圖,這是一個很好的做法,這隻有當有一個'contentView'集合,並且你傳遞的'Id'是有效的時纔會發生。我能想到的唯一事情就是在'setContentView()'請求窗口要素之前。 – 2013-02-10 23:25:09

+0

@Mark如果此答案對您有幫助,您應該將其標記爲已接受的答案。如果您還有其他問題,最好的辦法就是發佈另一個問題。 – 2013-02-11 00:34:47

相關問題