在 android 中使用 final 关键字

use of final keyword in android

一个 activity 称这个

Intent intent = new Intent(DrinkCategoryActivity.this, DrinkActivity.class);
intent.putExtra(DrinkActivity.EXTRA_DRINKNO, (int) id);

然后在另一个activity中,接收意图的是以下代码

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

我不明白的部分是第二个activity中EXTRA_DRINKNO变量的整个声明和定义。首先,我只是希望它被定义为 int 而不是 String。为它分配实际值 "drinkNo" 有什么意义?

然后(参见第二个问号标记行)drinkNo 被转换为 Integer。这还是同一个变量吗?

EXTRA_DRINKNO 表示进入映射的键,它不是整数值。也许将它命名为 EXTRA_DRINKNO_KEY.

会更好

get(EXTRA_DRINKNO) 正在使用字符串值作为键从 getExtras() 中提取整数。

变量drinkNo表示实际的整数值。

我想你是在谈论

中的 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 演员。这可能是多余的。