2015-05-19 3 views
0

Я знаю, как передать данные от одного вида деятельности к другому с помощью Intent:Передача несколько рядов данных к деятельности/услугам

Intent intent = new Intent(getBaseContext(), AddTextNote.class); 
intent.putExtra("text", note.text); 

Я спрошу мой вопрос, например: Если одна деятельности будет проходить только строку другое, второе действие будет знать, что каждый раз, когда он получает намерение от первого действия, он содержит только строку. Но если первая активность передает несколько наборов данных по различным событиям в другую, что лучший способ их отличить? Я имею в виду, скажем, первая активность передаст целое число, если пользователь нажмет кнопку1, передаст массив customClass, если пользователь нажмет кнопку2 и будет плавать, если пользователь нажмет кнопку3. Итак, кратко, есть три способа начать второе действие.

Как я должен знать, что содержит цель? Я могу проверить, является ли он нулевым, например:

Но это не разумный и эффективный способ. Стоит ли их отличать быстро и эффективно?

Благодаря

ответ

2

Я думаю, что способ может сделать трюк:

public enum State { 
    BUTTON_1, BUTTON_2, BUTTON_3 
} 

public class Activity1 extends Activity { 
    Intent intent = new Intent(getBaseContext(), Activity2.class); 
    intent.putExtra("text", note.text); 
    intent.putExtra("state", BUTTON_1); 
} 

public class Activity2 extends Activity { 
    State s = (State) intent.getSerializableExtra("state") 
    switch (s) { 
     case BUTTON_1: 
      //get String value from intent and do what needed 
      break; 
     case BUTTON_2: 
      //etc 
      break; 
     .... 
    } 
} 

Надеется, что вы получили эту идею.

+0

Так вы имеете в виду, я должен поставить дополнительные байты/число/перечисление для каждого намерения, что будет идентификатор, который намерение, правильно? –

+0

Это просто нормальная практика. Технически есть много способов. – Divers

0

Данные идентифицируются по строкам.

активность посылает:

intent.putExtra("stringA", ""+BUTTON_A); 
intent.putExtra("stringB", ""+BUTTON_B); 

активности B получает:

String stringAdata = getIntent().getStringExtra("stringA"); 
String stringBdata = getIntent().getStringExtra("stringB"); 
+0

Вы от PHP или JS?) – Divers

+0

Почему? что-то не так? – kanishkv

+0

В общем, можно пойти так, но довольно уродливо и иррационально. – Divers

Смежные вопросы