将多个数据系列传递给活动/服务

时间:2015-05-19 20:11:35

标签: android android-activity

我知道如何使用Intent将数据从一个活动传递到另一个活动:

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

我将用例子问我的问题:如果一个活动只将一个字符串传递给另一个,第二个活动将知道每次它从第一个活动接收到意图时,它只包含一个字符串。但是,如果第一个活动将各种各样的数据集传递给另一个活动,那么区分它们的最佳方法是什么?我的意思是假设第一个活动将传递一个整数,如果用户按下button1,如果用户按下button2将传递一个customClass数组,如果用户按下button3则将浮动。简而言之,有三种方法可以开始第二项活动。

我应该如何知道意图包含哪些内容?我可以检查是否为null,如:

string myStringParameter = intent.GetStringExtra("myStringParameter");

但这不是一种明智而有效的方式。无论如何要快速有效地区分它们吗?

由于

2 个答案:

答案 0 :(得分: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;
       ....
   }
}

希望你明白了。

答案 1 :(得分:0)

通过字符串识别数据。

活动 A 发送:

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

活动 B 收到:

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