2012-02-11 5 views
2

1つのアクティビティから別のアクティビティに2つの変数を渡す必要があります。私は最初の活動のために、以下のいるputExtras複数のputStringが機能しない

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    Bundle bundle=new Bundle(); 
switch (item.getItemId()){ 

case 1: 

    bundle.putString(drinkButton, "4"); 
    bundle.putString(drinkType, "1"); 
    Intent myIntent1 = new Intent(this, DrinksList.class); 
    myIntent1.putExtras(bundle); 
    startActivityForResult(myIntent1, 0); 
    return true; 

case 2: 

    bundle.putString(drinkButton, "1"); 
    bundle.putString(drinkType, "2"); 
    Intent myIntent2 = new Intent(this, DrinksList.class); 
    myIntent2.putExtras(bundle); 
    startActivityForResult(myIntent2, 0); 
    return true; 
} 
return false; 

その後、私は戻って値を取得するために、これを使用しますが、両方の値が「drinkType」ケース1 Iと同じ、すなわち同じ第二の活動で両方とも「1」を得て、ケース2私は4,1と1,2を得ることを期待しているときに両方に対して「2」を得る。

Bundle extras = getIntent().getExtras(); 

     drinkButton = extras.getString(drinkButton); 


     drinkType = extras.getString(drinkType); 

    Toast.makeText(this, "drink Button = "+drinkButton+" Drink Type = "+drinkType, Toast.LENGTH_LONG).show(); 


} 

私は複数の余分なものを渡すことはできないようです。何か案は?

+1

'drinkBut​​ton'と' drinkType'文字列の値を 'String drinkBut​​ton ="として初期化するときにdoubleをチェックしますか? "; ' –

+0

Ass Adilが示唆しているように、drinkBut​​tonとdrinkTypeのString値を確認してください。私は彼らが同じ価値を感じている。なぜなら、2番目のputString(drinkType、 "1/2")が最初のputString(drinkBut​​ton、 "4/1")を上書きするのと同じように、ケース1の場合は1、ケース2の場合は2のようになります。 putString( "drinkBut​​ton"、 "4/1")とputString( "drinkType"、 "1/2")を持つことを意味しますか? –

+0

同じ結果が得られるかどうかを調べるために文字列変数を使用する代わりに、文字列値をキーとしてハードコーディングしてみましたか? – bschultz

答えて

8

変数drinkButtondrinkTypeに値を割り当てない場合は、最初のアクティビティで値を使用すると、両方ともnullになります。その場合は、あなたのコード:

bundle.putString(drinkButton, "4"); 
bundle.putString(drinkType, "1"); 

bundle.putString(null, "4"); 
bundle.putString(null, "1"); 

見に相当し、あなたはputString()に「キー」を引数としてnull値を持つ変数を使用しています。

このような「キー」引数を設定する最も一般的な方法は、定数を使用することです。たとえば:

bundle.putString(IntentConstants.EXTRA_DRINK_BUTTON, "4"); 
bundle.putString(IntentConstants.EXTRA_DRINK_TYPE, "1"); 

を第二の活動でそれらを取得するために:あなたの活動の

public interface IntentConstants { 
    public static final String EXTRA_DRINK_BUTTON = "DrinkButton"; 
    public static final String EXTRA_DRINK_TYPE = "DrinkType"; 
} 

そして、このように、これらの定数を使用

ところで
String drinkButton = extras.getString(IntentConstants.EXTRA_DRINK_BUTTON); 
String drinkType = extras.getString(IntentConstants.EXTRA_DRINK_Type); 

、 String値として整数値を渡す特別な理由はありますか?なぜそれらを整数として渡すのですか?

+0

働いてくれてありがとう。私は以前はIntentConstantsを使用していません。私はこれを将来使用し、そうです、文字列を整数に変更しました。プロジェクトの早い段階で、私は文字列を渡していただけです。再度、感謝します。 – user1095784

関連する問題