2011-11-12 11 views
1

私はいくつかのエキストラを新しい意図に送りました。そこにバンドルをつかみ、それがnullならテストします。たびに値を取得して使用することができますが、それは毎回nullです。Intent Bundleは毎回Nullを返しますか?

誰かがif文で間違っているのを見ることができますか?

Intent i = getIntent(); 
Bundle b = i.getExtras(); 
int picked = b.getInt("PICK"); 
int correct = b.getInt("CORR"); 
type = b.getString("RAND"); 
if(b == null || !b.containsKey("WELL")) { 
    Log.v("BUNDLE", "bun is null"); 
} else { 
    Log.v("BUNDLE", "Got bun well"); 
} 

EDIT:バンドルが作成される場所。

Intent intent = new Intent(this, app.pack.son.class); 
Bundle b = new Bundle(); 
b.putInt("PICK", pick); 
b.putInt("CORR", corr); 
b.putString("RAND", "yes"); 
intent.putExtras(b); 
startActivity(intent); 
+0

バンドルを作成(および送信)するコードを入力してください。 –

答えて

5

私はこの問題は、あなたのバンドルがnullであることではないと思います。それはあなたがより早くNullPointerExceptionを取得するためではありません。

問題は、エラーメッセージが間違っていることです。これに

if(b == null || !b.containsKey("WELL")) { 
    Log.v("BUNDLE", "bun is null"); 
} else { 
    // ... 
} 

:この変更あなたはそれを追加していなかったので

if (!b.containsKey("WELL")) { 
    Log.v("BUNDLE", "bundle does not contain key WELL"); 
} else { 
    // ... 
} 

、バンドルは、このキーが含まれていない理由を、です。

+0

私はあなたを助けたいと思っていますが、もっと情報が必要です:1)エクストラを入れてこのアクティビティを上げるコードを見る必要があります。2)正しく理解すれば、bはnullだと言いますが、 ???それはできません..あなたは絶対にそれがnullだと確信していますか? (デバッグモードでブレークポイントを設定してヌルを取得しましたか?) –

0

これを使用した後は、b == nullをテストします。間違っている必要があります。また、最初にifが見つかりませんか?編集

ログインしているあなたは、バンドル内の「WELL」を入れていないので、文字列「饅頭はnullです」。 bはnullでなくてはいけません。そうしないと、クラッシュすることになります。これにあなたのifの文章を変更してみてください、あなたが得るものレポート:私はログメッセージを一致させるためにあなたのifステートメントを変更

if (b == null) { 
    Log.v("BUNDLE", "bun is null"); 
} else if (!b.containsKey("WELL")) { 
    Log.v("BUNDLE", "bun doesn't contain WELL"); 
else { 
    Log.v("BUNDLE", "Got bun well"); 
} 
0

。プログラムを実行してログメッセージを確認してください。

if(b == null) { 
    Log.v("BUNDLE", "bun is null"); 
} else { 
    if (b.containsKey("WELL")) { 
     Log.v("BUNDLE", "Got bun well"); 
    } 
} 
関連する問題