Android 如何将数据从活动A1发送到活动A3

Android 如何将数据从活动A1发送到活动A3,android,android-activity,Android,Android Activity,下面是一个场景 有三项活动。。A1(第一项活动)、A2(第二项活动)、A3(第三项活动)。 在这种情况下,活动流应该来自 A1->A2->A3 在A1中,我正在从服务器进行初始数据检索,并希望将数据发送到第三个活动,即直接发送到A3(但我不希望使用A1触发A3) i、 e。当活动A3从A2启动时,我想使用A1发送的数据 显而易见的解决方案(使用普通java方式)是使用诸如Hashmap/List/之类的公共数据结构。。插入A1中的数据并在A3中检索此数据。我想知道是否有其他使用Android A

下面是一个场景

有三项活动。。A1(第一项活动)、A2(第二项活动)、A3(第三项活动)。 在这种情况下,活动流应该来自 A1->A2->A3

在A1中,我正在从服务器进行初始数据检索,并希望将数据发送到第三个活动,即直接发送到A3(但我不希望使用A1触发A3)

i、 e。当活动A3从A2启动时,我想使用A1发送的数据

显而易见的解决方案(使用普通java方式)是使用诸如Hashmap/List/之类的公共数据结构。。插入A1中的数据并在A3中检索此数据。我想知道是否有其他使用Android API的替代解决方案


谢谢

有两种方法可以让你完成工作

1) 您可以借助intent将值从activity1传递到activity2。然后再从那里开始,你可以把它传递给activity3


2) 或者,您可以在activity1中将变量(希望在activity3中使用其值)初始化为静态变量,并在activity3中使用它们。

您使用了两种方式来连接数据,以便在不同的类中进行访问

=>第一种方法是使用putExtra()函数有目的地传递数据。。。。。 关于如何工作

=>第二种方法是使用一个公共类并在其中存储数据,以便使用来自任何其他类的数据。。。 关于如何工作


当你从A1调用A2时,你可以使用putExtra附加数据,你可以在A2中检索数据,然后当你从A2调用A3时,你可以使用putExtra附加数据。同样,您可以使用getExtra检索数据。

使用SharedReference。在A1中保存,在A3中检索

初始化

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); // 0 - for private mode
Editor editor = pref.edit();
存储数据

editor.putBoolean("key_name", true); // Storing boolean - true/false
editor.putString("key_name", "string value"); // Storing string
editor.putInt("key_name", "int value"); // Storing integer
editor.putFloat("key_name", "float value"); // Storing float
editor.putLong("key_name", "long value"); // Storing long

editor.commit(); // commit changes
// returns stored preference value
// If value is not present return second param value - In this case null
pref.getString("key_name", null); // getting String
pref.getInt("key_name", null); // getting Integer
pref.getFloat("key_name", null); // getting Float
pref.getLong("key_name", null); // getting Long
pref.getBoolean("key_name", null); // getting boolean
editor.remove("name"); // will delete key name
editor.remove("email"); // will delete key email
editor.commit(); // commit changes
检索数据

editor.putBoolean("key_name", true); // Storing boolean - true/false
editor.putString("key_name", "string value"); // Storing string
editor.putInt("key_name", "int value"); // Storing integer
editor.putFloat("key_name", "float value"); // Storing float
editor.putLong("key_name", "long value"); // Storing long

editor.commit(); // commit changes
// returns stored preference value
// If value is not present return second param value - In this case null
pref.getString("key_name", null); // getting String
pref.getInt("key_name", null); // getting Integer
pref.getFloat("key_name", null); // getting Float
pref.getLong("key_name", null); // getting Long
pref.getBoolean("key_name", null); // getting boolean
editor.remove("name"); // will delete key name
editor.remove("email"); // will delete key email
editor.commit(); // commit changes
删除数据

editor.putBoolean("key_name", true); // Storing boolean - true/false
editor.putString("key_name", "string value"); // Storing string
editor.putInt("key_name", "int value"); // Storing integer
editor.putFloat("key_name", "float value"); // Storing float
editor.putLong("key_name", "long value"); // Storing long

editor.commit(); // commit changes
// returns stored preference value
// If value is not present return second param value - In this case null
pref.getString("key_name", null); // getting String
pref.getInt("key_name", null); // getting Integer
pref.getFloat("key_name", null); // getting Float
pref.getLong("key_name", null); // getting Long
pref.getBoolean("key_name", null); // getting boolean
editor.remove("name"); // will delete key name
editor.remove("email"); // will delete key email
editor.commit(); // commit changes
清除存储

editor.clear();
editor.commit(); // commit changes

在中创建模型bean类并存储活动1的值


打开活动3时,从模型bean类获取值并将值设置为activity3,您可以使用Bundle将数据从一个活动类传递到另一个活动类,如下所示

Bundle bundle = new Bundle();
bundle.putString("Id", videoChannelId);
bundle.putString("C/V", "C");
bundle.putString("mode", "ch");
bundle.putString("code", "LiveTV");
bundle.putString("urlcount", "2");
Intent intent = new Intent(First.this,Second.class);
intent.putExtras(bundle);
startActivity(intent);
通过提供bundle id在第二个活动中获取数据,如下所示

 String id;
 Bundle  getBundle = this.getIntent().getExtras();

 id= getBundle.getString("Id") 
  etc......

您应该参考活动生命周期。使用意图和附加捆绑。。将启动该活动,但在我的场景中,活动A1不应启动A3,但A2应启动A3如果我正在将数据从A1传输到A2,您的方法将起作用,但我的问题是在遵循活动A1->A2->A3的同时将数据从A1传输到A3