0

这是场景..

有 3 项活动。A1(第 1 项活动)、A2(第 2 项活动)、A3(第 3 项活动)。在这种情况下,活动的流程应该是从 A1-> A2 -> A3

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

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

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

谢谢

4

6 回答 6

1

使用共享偏好。在 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.clear();
editor.commit(); // commit changes
于 2013-08-22T05:59:41.960 回答
0

您可以通过两种方式完成工作。

1)您可以在意图的帮助下将值从活动1传递到活动2。然后从那里再次意图将其传递给activity3。

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

于 2013-08-22T05:56:29.383 回答
0

您使用两种方式连接数据以在不同类中访问...

=> 第一种方法是使用 putExtra() 函数通过 Intent 传递数据..... 在这里展示如何工作......

=> 第二种方法是使用一个通用类并在其中存储数据以使用来自任何其他类的数据...... 在这里展示如何工作......

这两种方式都可以连接不同的类以获取过多的公共数据......

于 2013-08-22T05:59:25.467 回答
0

当您从 A1 调用 A2 时,您可以使用 putExtra 附加数据,您可以在 A2 中检索这些数据,然后当您从 A2 调用 A3 时,您可以使用 putExtra 打磨数据。您可以再次使用 getExtra 检索数据。

于 2013-08-22T05:59:28.177 回答
0

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

在打开活动 3 时,从模型 bean 类中获取值并将值设置为活动 3

于 2013-08-22T06:01:38.347 回答
0

您可以使用 Bundle 将数据从一个 Activity 类传递到另一个 Activity 类 像这样

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来获取第二个Activity中的数据

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

 id= getBundle.getString("Id") 
  etc......
于 2013-08-22T06:55:15.567 回答