【发布时间】:2012-02-11 16:04:14
【问题描述】:
我需要将 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();
}
看来我最多只能通过一个。有什么想法吗?
【问题讨论】:
-
在将
drinkButton和drinkType初始化为String drinkButton = "?";时,请仔细检查字符串值 -
Ass Adil 建议,检查drinkButton 和drinkType 的字符串值。我有一种感觉,它们的价值是一样的。它可以解释为什么你在案例一中得到 1,在案例二中得到 2,就好像它们是一样的,第二个 putString(drinkType, "1/2") 将覆盖第一个 putString(drinkButton, "4/1")。你的意思是有 putString("drinkButton","4/1") 和 putString("drinkType", "1/2") 吗?
-
您是否尝试过将字符串值硬编码为键而不是使用字符串变量来查看是否得到相同的结果?
-
我声明私有字符串drinkButton;和私有字符串drinkType;
-
另外,刚刚尝试交换圆形 bundle.putString(drinkType, "2");和 bundle.putString(drinkButton, "4");现在我得到 4 而不是 2 和 4。为什么一个不同名称的变量会覆盖另一个变量?