一项活动称之为
Intent intent = new Intent(DrinkCategoryActivity.this, DrinkActivity.class);
intent.putExtra(DrinkActivity.EXTRA_DRINKNO, (int) id);
然后在另一个活动中,接收意图的活动是以下代码
public class DrinkActivity extends Activity {
public static final String EXTRA_DRINKNO = "drinkNo"; // ???????
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_drink);
// Get the drink from the intent
int drinkNo = (Integer)getIntent().getExtras().get(EXTRA_DRINKNO); // ?????
Drink drink = Drink.drinks[drinkNo];
我不理解的部分是第二个活动中EXTRA_DRINKNO
变量的整个声明和定义。首先,我只是希望将其定义为int
NOT而不是String
。为其分配"drinkNo"
的实际值是什么意思?
然后(见第二个问号标记为行)drinkNo
被转换为Integer
。这甚至是同一个变量吗?
答案 0 :(得分:1)
EXTRA_DRINKNO
表示地图中的关键字,它不是整数值。也许它会更好地命名为EXTRA_DRINKNO_KEY
。
get(EXTRA_DRINKNO)
使用字符串值作为键从getExtras()
中提取整数。
变量drinkNo
表示实际的整数值。
答案 1 :(得分:0)
我认为你在谈论
中的final
public static final String EXTRA_DRINKNO = "drinkNo";
这就是获取全局访问而无法再次更改该变量的原因,因为它被用作Extras的KEY,这将会影响您的意图。
你可以使用,
int drinkNo = getIntent().getIntExtra(DrinkActivity.EXTRA_DRINKNO, -1);
如果没有,-1将被分配给drinkNo,
intent.putExtra(DrinkActivity.EXTRA_DRINKNO, (int) id);
我不会对(int) id
演员提起诉讼。这可能是多余的。