2

1つのアクティビティから別のアクティビティに2つの変数を渡す必要があります。

私は最初の活動のために以下を持っています:

@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;

次に、2番目のアクティビティでこれを使用して値を取得しますが、両方の値は同じです。つまり、「drinkType」と同じです。ケース1は両方で「1」を取得し、ケース2は両方で「2」を取得します。 4,1と1,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つ以上渡すことはできないようです。何か案は?

4

1 に答える 1

9

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

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

と同等です

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

nullへの「キー」引数として値を持つ変数を使用していますputString()

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

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

次に、アクティビティで、次のようにこれらの定数を使用します。

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

2 番目のアクティビティでそれらを取得するには:

String drinkButton = extras.getString(IntentConstants.EXTRA_DRINK_BUTTON);
String drinkType = extras.getString(IntentConstants.EXTRA_DRINK_Type);

ところで、整数値を文字列エクストラとして渡す特別な理由はありますか? それらを整数として渡さないのはなぜですか?

于 2012-02-12T04:05:13.980 に答える