Один активности называет этоиспользования конечного ключевого слова в андроиде
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
НЕ как String
. Какой смысл присвоить ему фактическое значение "drinkNo"
?
Затем более поздняя версия (см. Вторую строку, отмеченную вопросительным знаком) drinkNo
отлита до Integer
. Это даже одна и та же переменная?
«drinkNo отбрасывается на целое число» Нет, это не так (и какое целое его можно было отличить, во всяком случае?). 'Bundle.get' принимает параметр String, и для этого ключа происходит возврат значения, которое может быть присвоено' Integer'. –
Этот вопрос не имеет ничего общего с ключевым словом 'final' - он будет работать точно так же без это (при условии, что никто не изменяет значение 'EXTRA_DRINKNO'). –
Это 'intent.putExtra (DrinkActivity.EXTRA_DRINKNO, (int) id);' равнозначно 'intent.putExtra (" drinkNo ", (int) id);' и '(Integer) getIntent(). GetExtras(). get (EXTRA_DRINKNO); 'равнозначно' (Integer) getIntent(). getExtras(). get ("drinkNo"); –