2016-05-26 13 views
0

GCMリスナーを持っていますが、GCMメッセージ(Bundleデータ)にパラメータ(キー、値)があり、特定のキーを彼のgetメソッドと私はこのような「パッチ」(または再試行)の戻り値に持っている:私はGCMリスナーは実際の値を取得できません

// this can't retrieve the value, 
// example: "id" in message is = 123, intValue gets 0 (default value for int) 
int intValue = data.getInt("id"); 
if (intValue == 0) { 
    // but this way can catch the int value, 
    // example: "id" in message is = 123, intValue gets 123; 
    intValue = Integer.valueOf(data.getString("id")); 
} 

「パッチ」データで返された(または失敗取り出さ)値に

なぜこれが起こっていますか? (キー名はどちらの場合も同じですが、そうであってはいけません)

+0

あなたがしようとしていることを否定しませんが、そのコードを見るだけでは、 。 – JML

+0

私はInteger == nullを持っていました。私はテストしていました。 –

+0

あなたは何をしようとしているのかまだ分かりません。 getIntがデフォルト値を返す場合は、その名前のバンドル( "id")内にINT項目がないためです。 「パッチ」は機能しますか?あなたは文字列としてそれを取得できますか? – JML

答えて

1

主な問題は、私は data.getInt( "ID")と、ID = 123の値を取得することはできませんです。しかし、私はdata.getString( "id")で値を取得できます。 値と型の残りの部分はgetBooleanのように大丈夫です、

を取得する次に、あなたはあなたがGCMサーバに送信JSONを生成しているかをチェックする必要があります。おそらくあなたはid attrを送信しています。文字列(引用符付き)として、getString()でその値を読み取ることができるのはなぜですか?

+0

GCM送信者はサーバー(別の部門)ですが、あなたが言うことは理にかなっています。だから私は私の側でマニュアルソリューションを使用する必要があります:/ ...ありがとう。 –

1

GCMバンドルには文字列のマップしか含まれていません。そのため、getInt( "id")は0を返します。 値を手動で解析する必要があります。 NumberFormatExceptionをキャッチして、この場合は変数を0に設定してください。

int intValue; 

try{ 
    intValue = Integer.parseInt(data.getString("id")); 
}catch (NumberFormatException e){ 
    intValue = 0; 
} 
関連する問題