2014-02-17 81 views
1

我很困惑的一個公共靜態最終字符串的實例引用時返回null。我已經使用了這個確切的構造數百次,但是這次我沒有看到我可能會做什麼不同。代碼如下:公共靜態最終字符串訪問時返回空

public class NSNItemDisplayActivity extends ExpandableListActivity 
     implements LoaderManager.LoaderCallbacks<Cursor> 
{ 
    public static final String NSN_ID_KEY = "NSN_ID_KEY"; 
    ... 
} 

通過代碼,這是否引用:

card.setOnClickListener(new Card.OnCardClickListener() { 
     @Override 
     public void onClick(Card card, View view) { 
       Intent nsnListIntent = new Intent(
         mContext, 
         NSNItemDisplayActivity.class); 
       Bundle bundle = nsnListIntent.getExtras(); 
       bundle.putString(NSNItemDisplayActivity.NSN_ID_KEY, //Null Pointer Exception 
         card.getId()); 
       mContext.startActivity(nsnListIntent); 
      } 
     } 
    ); 

我收到一個空指針異常,然後坐下來幫我的頭。

先謝謝了,我覺得很傻,問這麼簡單的問題。

+5

我覺得你包是空不是字符串。你創建一個意圖,並且不添加任何額外的東西,你會得到一個空包 –

回答

2
Intent nsnListIntent = new Intent(
         mContext, 
         NSNItemDisplayActivity.class); 
       Bundle bundle = new Bundle() 
       bundle.putString(NSNItemDisplayActivity.NSN_ID_KEY, //Null Pointer Exception 
         card.getId()); 
nsnListIntent.PutExtra("", bundle); 
       mContext.startActivity(nsnListIntent); 

//這樣做隊友

1

此行

bundle.putString(NSNItemDisplayActivity.NSN_ID_KEY 

不會return null除非bundlenull,從你向我們展示了什麼。初始化您Bundle第一

Intent nsnListIntent = new Intent(mContext, NSNItemDisplayActivity.class);     
Bundle bundle = new Bundle(); 
bundle.putString(NSNItemDisplayActivity.NSN_ID_KEY, card.getId()); 

你不必在你Intent任何extras初始化這個Bundle來,因爲你只是上一行創建它。

也許你的意思是從extras初始化它在Intent用於創建此Activity。在這種情況下,你會想是這樣

Bundle bundle = getIntent().getExtras(); 
相關問題