2011-03-14 4 views
3

標準のAndroidインテント/バンドルメソッドを使用して、サブアクティビティにデータを渡しています。サブアクティビティに渡されるとバンドルがnullになる

問題は、アクティビティが開始される前にインテントが良好に見えますが、サブアクティビティではnullとして表示されるという問題があります。私はこの問題を抱えている誰かを見つけることができないので、私はどこを見て/どのようにデバッグするかについてのポインタを尋ねると思った。

@Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     super.onListItemClick(l, v, position, id); 

     Intent i = new Intent(ctx, ArticleView.class); 

     i.putExtra("url", articles.get(position).url.toString()); 
     // The following line correctly logs the URL 
     Log.d(TAG,"Starting article viewer with url " + i.getStringExtra("url")); 

     startActivityForResult(i,ACTIVITY_ARTICLE); 
    } 

子アクティビティスニペット:

@Override 
protected void onCreate(Bundle icicle) { 

    super.onCreate(icicle); 
    setContentView(R.layout.article_view); 

    if (icicle != null) { 
     // Never called! 
    } else { 
     // Always called 
     Log.d(TAG,"Icicle is null - no URL passed in"); 
    } 

} 

つららがnullであるという事実を無視してからの状態情報を取得しようと

親アクティビティスニペット(ターゲットは2.1 Androidのです)それは(getStringを使用して)ハングし、結果:

03-14 22:23:03.529: WARN/ActivityManager(52): Activity HistoryRecord{44ddd238 com.t.s/.ArticlesList} being finished, but not in LRU list 

ご迷惑をおかけして申し訳ございません。 OnCreate関数で

答えて

3

にアクセスしてみてください。

意図は、あなたが参照しているバンドルつららは、それが戻って一時停止状態から持ち込まれたときのアクティビティが使用するバンドルである

Intent intent = getIntent(); 

て取り出すことができます。例えば。アクティビティを再起動する前にアクティビティの状態を保存する必要がある場合は、これが保存されたデータの場所です。

+0

詳細をありがとう、私は今何が間違っていたのか分かります。 –

1

()それはsubactivityのコンストラクタ(または任意の活動)に渡され、意図するところではないのバンドルをこのよう

Bundle b = getIntent().getExtras(); 
+0

ありがとうございます。 –

関連する問題