Как отправить переменные из основного действия в несколько действий в Android?

Я пытаюсь создать приложение, которое

  1. MainActivity
    это страница входа, она содержит 4 переменные, когда я нажимаю кнопку входа, она переходит на HomeTab другого действия, используя намерение
    Intent i = new Intent(FirstMain.this,Home_tab.class);
    startActivity(i);

  2. HomeTab — три вида вкладок.
    а. Профиль
    б. Аккаунт
    в. Настройки

Моя проблема заключается в том, как передать эти 4 переменные из MainActivity в 3 действия на вкладке.


person Sibin Francis    schedule 29.01.2013    source источник


Ответы (7)


у вас есть два варианта.

  1. вы можете использовать намерение.
  2. вы можете использовать общие настройки.
person Sagar Maiyad    schedule 29.01.2013

Вы можете добавить Bundle в качестве дополнительного параметра в намерение

Bundle bundle = new Bundle();
bundle.putString("key", "peanuts");
bundle.putInteger("key2", 100);
i.putExtras(bundle);

Затем, чтобы получить его

final Bundle parameters = this.getIntent().getExtras();
String food = parameters.getString("key");
person MLProgrammer-CiM    schedule 29.01.2013
comment
Это только для одного действия, которое запущено, а не для нескольких действий, которые еще не запущены. - person uzay95; 23.03.2013

В классе 1:

i.putExtras("Variable1", "Value1");
i.putExtras("Variable2", 2);
i.putExtras("Variable3", true);
startActivity(i);

В классе 2:

String Var1 = this.getIntent().getExtras().getString("Variable1");
int Var2 = this.getIntent().getExtras().getInt("Variable2");
boolean Var3 = this.getIntent().getExtras().getBool("Variable3");
person Matt Clark    schedule 29.01.2013

Вы можете передать их в Intent, который вы используете для запуска активности HomeTab (см. Намерение).

person takecare    schedule 29.01.2013

используйте намерение.putExtra для передачи значений, которые вы хотите

Intent i=new Intent(FirstMain.this,Home_tab.class);
i.putExtra("Profile", "profiledata");
i.putExtra("Account", "Account data");
startActivity(i)

и получить эти проходящие значения в следующем действии

Intent intent = getIntent();
String id = intent.getStringExtra("Profile");
String name = intent.getStringExtra("Account");

Проверьте Как получить дополнительные данные от намерения на Android?

person UdayaLakmal    schedule 29.01.2013

В действии входа в систему отправьте переменную через Intent

Intent i = new Intent(FirstMain.this,Home_tab.class);
i.putExtra("var1", "username");
i.putExtra("var2", "activity";
startActivity(i);

В Home_Tab получите намерение

Intent intent = getIntent();
String id = intent.getStringExtra("var1");
String name = intent.getStringExtra("var2");

Информацию об общих настройках см. здесь

person Raja Asthana    schedule 29.01.2013
comment
я не хочу передавать данные в активность Home_Tab, для передачи данных требуется два раза. т.е.; сначала передайте данные из MainActivity в Home_tab Activity, затем из Home_tab в три tabActivity, я хочу напрямую передать данные в 3 tabActivity. есть ли способ... я думаю, что общие предпочтения - лучший способ... кто-нибудь может привести пример... - person Sibin Francis; 29.01.2013
comment
я не хочу передавать данные в активность Home_Tab, для передачи данных требуется два раза. т.е.; сначала передайте данные из MainActivity в Home_tab Activity, затем из Home_tab в три tabActivity, я хочу напрямую передать данные в 3 tabActivity. Когда я использую два намерения в MainActivity, т.е. один для перенаправления на активность Home_tab, а другой для передачи значений в одну из tabActivity, тогда он показывает ошибку ... есть ли какой-либо способ .... я думаю, что общие предпочтения - лучший способ ... кто-нибудь может привести пример ... - person Sibin Francis; 29.01.2013

Если у вас есть несколько «глобальных» переменных, вы можете настроить «BaseActivity», который наследуется от Activity, не имеет соответствующего представления, а затем все остальные ваши Activity наследуются от BaseActivity, а не напрямую от Activity.

Это позволяет вам иметь общедоступные общие переменные в BaseActivity, к которым могут получить доступ все ваши другие действия, которые унаследованы от него.

Очевидно, что будьте осторожны с этой техникой, она легко может быть очень грязной и привести к глобальным переменным, которые не должны быть глобальными, и т. д. Но она удобна для очистки кода, который дублируется в представлениях (общие методы в BaseActivity) или для передачи информации между представлениями. , как состояние входа в систему.

person LocalPCGuy    schedule 10.12.2013