2012-01-31 5 views
0

バンドルを使用して2つのクラス間でintを渡そうとしています。私はオンラインで見て、それは私のために働いていない簡単にする必要がありますように思える:(任意の助けが大いに感謝!私は単純なゲームで1つのページから別のものに別のものに渡そうとしていますAndroidプラットフォームで2つのクラス間でintを渡そうとしています

ここ

は、私が

int life = 5; 

.... 

if(input.equalsIgnoreCase(teststr)) 
       { 
        Intent i = new Intent("com.name.PAGETWO"); 
        i.putExtra("com.name.PAGETWO.life", life); 
        startActivity(i); 
        mpButtonClick.stop(); 
} 

からそれを渡しています最初のページのコードであると私はそれを実行しようとすると、2ページ目に、int型

Intent i = new Intent("com.name.PAGETWO"); 
Bundle extras = i.getExtras(); 
int temp2 = extras.getInt("life"); 
int life = temp2; 

を受信しようとする、それがしようとします2番目のページに進み、アプリケーションが予期せず停止したと言うだけですが、それは正常に実行され続けるコードを教えて、私は間違いなくどこかでここにコードを入れていることを知っている。前もって感謝します!

答えて

3

2つ目のページに新しいインテントを作成していますが、もちろんそれにはバンドルがありません。代わりに、getIntent()を使用して呼び出し側のインテントを取得する必要があります。

は、ここにあなたの2ページ目のコードは、見ることができる方法は次のとおりです。

int life = getIntent().getExtras().getInt("life"); 

EDITは:もう一度あなたのコードを見てみると、余分のキー名は、両端に一貫性があることを確認してください。確かに、私は通常このために最終変数を使用します。だからあなたの第二の活動のトップ(onCreate()の外)でこれを宣言し、(のは、それがActivityTwoだとしましょう):

final static public String EXTRA_LIFE = "life"; 

そして、呼び出し元のアクティビティに:

Intent i = new Intent(this, ActivityTwo.class); 
i.putExtra(ActivityTwo.EXTRA_LIFE, life); 
startActivity(i); 

を(あなたはまた、構築されている可能性がありあなたの意図は間違っています;私の例を比較してください)。

そして第二に活動中、onCreate()の内部:

int life = getIntent().getIntExtra(EXTRA_LIFE, 0); 

(余分が存在しない場合は、デフォルト値があることを望むもので0を置き換えることができます。)

その方法タイプミスを心配する必要はなく、一貫していることを確認するためにEclipseの提案に頼ることができます。

+0

また、Intentには、それをさらに凝縮させる 'getIntExtra()'関数があります。 Eclipseオートコンプリート候補(Ctrl + Space)から多くのことを学ぶことができます。 – LouieGeetoo

+0

ありがとう、私はあなたのコードを入れたが、それはまだクラッシュ、私はバンドルに関連してもうコードを入れておく必要がありますか?私はこれは少しシンプルな場合は、ごめんなさい、Javaの新しい並べ替え! – user1180888

+0

私は自分の答えを編集しました。あなたはインテントを間違って構築しているようにも見えました(少なくとも私がこれまで行ったことはありません)。私の例を見てください。 – LouieGeetoo

4

新しいインテントオブジェクトに、渡したintが含まれているのはなぜですか?受信者アクティビティでは、getIntent()を使用して、アクティビティが開始されたインテントを取得します。その意図にはあなたのエキストラが含まれています。

+0

ありがとうございます。コードはどのように見えるのですか?まだ私のために働いていない! – user1180888

+0

私はLouieGeetooの提案に同意します。第2の活動であなたの '人生'検索コードはどこですか?それは 'onCreate()'にあるのでしょうか、あるいはコンストラクタのどこですか? –

関連する問題