putExtras多个putString不起作用

时间:2012-02-11 16:04:14

标签: android eclipse extras

我需要将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;

然后在第二个活动中我使用它来获取值,但两个值都是相同的,即与'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 个答案:

答案 0 :(得分:8)

如果您没有为变量drinkButtondrinkType分配值,则在第一个活动中使用它们时,它们都是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");

并在第二个Activity中检索它们:

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

顺便说一句,是否有一个特殊的原因是你将整数值作为String附加项传递?为什么不将它们作为整数传递?