在android中使用final关键字

时间:2016-01-06 23:13:51

标签: java final

一项活动称之为

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。这甚至是同一个变量吗?

2 个答案:

答案 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 演员提起诉讼。这可能是多余的。

相关问题