gpt4 book ai didi

java - Activity 与来自一个 Activity 的 setResult() 和来自另一个 Activity 的 onActivityResult() 之间的通信

转载 作者:太空狗 更新时间:2023-10-29 16:38:36 24 4
gpt4 key购买 nike

我是 Java 和 Android 编程的新手。

我拥有的是一个 Activity,点击一个按钮它会启动一个带有选择框的不同 Activity(Facebook 的好友选择器)。

我想要做的是,在选择我想要的用户后,在第一个 Activity 中显示他们。作为第二个目标,我会尝试为每个用户创建一个按钮。但首先我只是将信息从一项 Activity 获取到另一项 Activity 。

我认为 setResult() 和 onActivityResult() 是我正确的选择。我不确定如何以及为什么要这样做。

所以在我的第二个 Activity 中,这包含了我想要的所有用户:

List<GraphUser> friendList = friendPickerFragment.getSelection();

但这显然行不通:

setResult(RESULT_OK, (Intent) friendListToPlay);
finish();

我如何将我的 GraphUser 对象列表放入此 Intent 中?

然后在我的第一个 Activity (当然称为第二个 Activity )上我有 onActivityResult,我如何再次从 Intent 中获取列表?

public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REAUTH_ACTIVITY_CODE) {
uiHelper.onActivityResult(requestCode, resultCode, data);

} else if (resultCode == Activity.RESULT_OK) {

// Intent data to List<GraphUser> ?
}
}

还是我做的完全错了?

最佳答案

我检查了文档,不幸的是 GraphUser 不可序列化。您可以做的是在调用 setResult 之前将 List 转换为 List:

List<String> tmpList = new ArrayList<String>();
for (GraphUser tmp : friendList) {
tmpList.add(tmp.getInnnerJSONObject().toString());
}
Intent intent = new Intent();
intent.putExtra("list", tmpList);
setResult(RESULT_OK, intent);
finish();

在onActivityResult上,可以读回数据:

  else if (resultCode == Activity.RESULT_OK) {

List<String> tmpList = intent.getExtra("list");
List<GraphUser> list = new ArrayList<GraphUser>();
for (String tmpString : tmpList) {
GraphUser user = (GraphUser) GraphObject.Factory.create(new JSONObject(tmpString), ,GraphUser.class);
list.add(user);
}
}

检查拼写错误/空值/正确转换

关于java - Activity 与来自一个 Activity 的 setResult() 和来自另一个 Activity 的 onActivityResult() 之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22096221/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com