在android中通过意图传递数据

Posted

技术标签:

【中文标题】在android中通过意图传递数据【英文标题】:Passing data via intent in android 【发布时间】:2017-11-06 19:32:57 【问题描述】:

我有 5 个活动,比如活动 A,B,C,DE

每个活动都有两个buttons 是和否,按钮只有我想传递给活动E 的数据。

我需要做以下事情:

--> 当用户按下A_activity 的yes/no 按钮时,用户移动到B_activity 但数据通过intent 传递给activity E。 同样,在活动 B 中,用户按下是/否按钮,用户将移至活动 C,但数据传递给活动 E,依此类推。

我做了很多搜索,但找不到解决方案。有什么办法可以做到这一点。

【问题讨论】:

您必须通过 Intent 启动/移动到所需的活动,并通过 SharedPreferences 传递数据查看:***.com/questions/15466673/… @zakir 我是编程新手,首先我将学习如何使用 SharedPreferences 来传递数据。我会学习它,如果有任何问题我会告诉你。但是有没有其他方法可以通过意图做到这一点。 看起来当你将一个意图传递给一个将要启动的活动的那一刻 - 没有避免它 - 或者我没有意识到它.. @Zakir 将意图传递给活动非常有效,但我的难题是,如果用户处于活动 A,则在按下是/否按钮时,我想将数据传递给最后一个活动,即 E 活动 + 用户移动到下一个活动,即活动 B。我已经看到数据 + 用户移动到下一个活动的示例,但我的场景与互联网上共享的示例有点不同。我只希望用户移动下一个活动,但数据传递到最后一个活动,即在我的情况下为 E。 发布你尝试过的代码 【参考方案1】:

使用 SharedPreferences 类传递数据:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("key", "Value");
editor.commit();

然后在活动E中:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
String value = sharedPref.getString("key", defaultValue);

希望这会有所帮助。

【讨论】:

【参考方案2】:

您确实可以通过 Intent 将数据传回 Activity 的 onActivityResult()

活动 E 启动活动 A

final int RESULT_FOR_CLASS_DATA = 12; // pick a number to use
String returnedData;

Intent intent = new Intent(this, ActivityA.class);
startActivityForResult(intent, RESULT_FOR_CLASS_DATA);

A 中的示例(从 E 开始)

Intent data = new Intent();
data.putExtra("ReturnData", dataToReturn); 
setResult(RESULT_OK, data);
finish(); // returning to Activity E

E 的 onActivityResult() 中的示例

if (requestCode == RESULT_FOR_CLASS_DATA) 
    returnedData = data.getStringExtra("ReturnData"));

虽然有多种方法可以完成移动数据,但这只是一个示例。

要推荐一个替代方案,请使用 Handler 代替这个。假设由于返回的 Activity 被暂停,处理程序可能需要在单独的类或全局静态变量等中设置数据,并在 Activity 重新启动时检索。因此,它可以在任何类中几乎没有代码重复。只需检索和使用。而 Intent 需要在每个类中重复代码。它还可以轻松地允许从任何 Activity 转到任何 Activity,例如 A->B->E->C,而不需要 E->A->E->B。只是想一想。

【讨论】:

以上是关于在android中通过意图传递数据的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 2 中通过“prepareForSegue”传递数据

如何在 django 中通过 AJAX 请求传递数据?

Android中的意图数据传递[重复]

Android-Intent意图传递数据

在 swift 2 中通过 segue 传递数据

在python中通过引用传递引用