Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将多个数据系列传递给活动/服务_Android_Android Activity - Fatal编程技术网

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

Android 将多个数据系列传递给活动/服务,android,android-activity,Android,Android Activity,我知道如何使用Intent将数据从一个活动传递到另一个活动: Intent intent = new Intent(getBaseContext(), AddTextNote.class); intent.putExtra("text", note.text); 我将举个例子问我的问题:如果一个活动只向另一个活动传递一个字符串,那么第二个活动将知道,每当它从第一个活动接收到意图时,它只包含一个字符串。但是,如果第一个活动将不同场合的多组数据传递给另一个活动,那么区分它们的最佳方法是什么?我的意

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

Intent intent = new Intent(getBaseContext(), AddTextNote.class);
intent.putExtra("text", note.text);
我将举个例子问我的问题:如果一个活动只向另一个活动传递一个字符串,那么第二个活动将知道,每当它从第一个活动接收到意图时,它只包含一个字符串。但是,如果第一个活动将不同场合的多组数据传递给另一个活动,那么区分它们的最佳方法是什么?我的意思是,假设第一个活动在用户按下按钮1时传递一个整数,在用户按下按钮2时传递一个customClass数组,在用户按下按钮3时传递pas浮点。简单地说,有三种方法可以开始第二项活动

我如何知道意图包含什么?我可以检查是否为空,如:

string myStringParameter = intent.GetStringExtra("myStringParameter");
但这不是一个明智和有效的方法。有没有办法快速有效地区分它们


谢谢

我想这样可以达到目的:

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;
       ....
   }
}

希望您能理解。

数据是通过字符串识别的

活动A发送:

intent.putExtra("stringA", ""+BUTTON_A);
intent.putExtra("stringB", ""+BUTTON_B);
活动B接收:

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

所以你的意思是我应该为每个意图添加额外的byte/integer/enum,作为该意图的标识符,对吗?这只是正常的做法。从技术上讲,有很多方法可以做到这一点。你是来自PHP还是JS?)总的来说,这是可能的,但相当丑陋和不理性。