在android中通过intent传递数据

时间:2017-06-05 22:52:18

标签: android android-studio android-intent android-button android-databinding

我有5项活动,比如活动$file.FullName$file.Delete()ABC

每个活动有两个D是&不,按钮具有我想要传递给活动E的数据。

我需要做以下事情:

- >当用户按下A_activity的是/否按钮时,用户移动到B_activity但数据通过意图传递给活动E. 类似地,在活动B用户按是/否按钮,用户将移动到活动C但数据传递到活动E,依此类推。

我已经做了很多搜索,但无法找到解决方案有没有办法做到这一点。

2 个答案:

答案 0 :(得分:0)

使用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);

希望这有帮助。

答案 1 :(得分:-1)

您确实可以通过意图将数据传回活动的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 restart或其他内容上检索。所以它可以在任何类中进行很少甚至没有代码重复。只需检索并使用。而Intent需要在每个类中进行代码重复。它也将容易地允许从任何活动到诸如A-> B-> E-> C的任何活动,而不是要求E-> A-> E-> B.只是想一想。