2014-02-17 4 views
1

Я озадачен экземпляром публичной статической конечной строки, возвращающей null при ссылке. Я использовал эту точную конструкцию сотни раз, но не вижу, что я мог бы делать по-другому на этот раз. Код следующим образом:public static final String возвращает 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

Я думаю, ур расслоение нуль не строка. u создайте намерение и без добавления каких-либо дополнительных функций u получите нулевой пакет –

ответ

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 если bundle не null, от того, что вы показываете нам. Инициализировать ваш Bundle первый

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

Вы не имеете extras в вашем Intent инициализировать это Bundle в виду того что вы просто создать его на предыдущей строке.

Возможно, вы хотите его инициализировать от extras в файле Intent, используемым для создания этого Activity. В этом случае, вы хотели бы что-то вроде

Bundle bundle = getIntent().getExtras(); 
Смежные вопросы