2010-02-27 2 views
4

В андроиде: Я пытаюсь взять данные с одного действия/экрана на другой.В Android: Как получить переменные/данные с одного экрана на другой?

Предположим, я добавляю два номера. Я компоную свой первый экран (xml) с 2 видами EditText, двумя ярлыками и кнопкой «ОК». Теперь я хочу добавить числа, которые я ввел в представления EditText. Скажем, я ввожу 2 и 2 (2 + 2 = 4).

Теперь, когда я нажимаю кнопку «ОК», я хочу, чтобы появился новый экран/действие, и просто покажите мне ответ (4). Я использую глобальные vars для этого? Любая помощь будет оценена по достоинству.

ответ

2

Посмотрите на раздел Some Intent examples (от общих задач и как делать их в Android):

в основном, используется myIntent.putExtra (...) для передачи данных (может быть String, Int , Boolean и т.д.) другой принимающей стороне (другой деятельности) ...

тогда результат будет передан обратно в вызывающий onActivityResult Activity (в) метод:

protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
    // See which child activity is calling us back. 
    switch (resultCode) { 
     case CHOOSE_FIGHTER: 
      // This is the standard resultCode that is sent back if the 
      // activity crashed or didn't doesn't supply an explicit result. 
      if (resultCode == RESULT_CANCELED){ 
       myMessageboxFunction("Fight cancelled"); 
      } 
      else { 
       myFightFunction(data); 
      } 
     default: 
      break; 
    } 

H.

+0

Выше для результата деятельности , но я думаю, что вы хотите переместить данные из 1 активности в другую например myIntent.putExtra («ключ», «значение»); , то в новом намерении вы используете Intent.getExtra («ключ») Есть больше putExtra() для других типов – Ally

+0

да действительно, и, честно говоря, иногда я также использую глобальные вары и/или настройки для хранения данных, которые мне нужны в других видах деятельности. – Hubert

+0

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

4

Я полагаю, что вы запускаете «следующий экран» с помощью Intent (так оно и должно быть сделано).

В Намерения вы можете передать дополнительные услуги (putExtra) и в OnCreate в "следующей деятельности" вы можете getIntent().getXExtra() (заменить X с типом поля)

23

Первая активность

Intent myIntent = new Intent(); 
myIntent.putExtra("key", "value"); 
startActivity(myIntent); 

Новая активность

Intent myIntent = getIntent(); // this is just for example purpose 
myIntent.getExtra("key"); 

Проверьте different types you can use на Android Dev Site

Примечание. Если вы ищете способ совместного использования объекта/данных по всему миру, вы можете расширить класс Application. Выезд How to declare global variables in Android? (ответ Soonil)

+0

спасибо за это .... – user4232

0

Образец из моего проекта. Мы должны использовать Bundle для получения данных.

Используйте код в/из первого действия, задав данные. Вы можете установить все типы данных, включая массивы.

Intent i = new Intent(this, LanguageSetting.class); 
i.putExtra("From", 1); 
startActivity(i); 

Как извлечь данные, введите приведенный ниже код в новом/втором действии.

Intent myIntent = getIntent(); 
Bundle b = myIntent.getExtras(); 
intCameFrom = b.getInt("From"); 
Смежные вопросы