我是 Java 和 Android 编程的新手。
我所拥有的是一个 Activity,单击按钮后它会启动一个带有选择框的不同 Activity(Facebook 的 friend 选择器)。
我想要做的是,在选择我想要的用户后,将它们显示在第一个 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/