java - Activity 之间的通信,其中一个 Activity 使用 setResult(),另一个 Activity 使用 onActivityResult()

标签 java android android-intent android-activity

我是 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/

相关文章:

java - 首次使用 AndroidStudio 构建失败

android - 当 Activity 退出时,带有线程的自定义 SurfaceView 会使应用程序崩溃

java - 使用动态键序列化 JSON 响应

android - 广告叠加层需要在 intent extras 中使用 useClientJar 标志。

java - 解析Windows事件日志,可能吗?

java - Java 代码中出现语法错误 : Cannot cast from Object to int

java - 使用 Intent 避免 FAILED BINDER TRANSACTION 错误

android - onActivityResult() 未被调用,但在其他地方有效

java - JXLS 2.0 条件格式论坛未按行更新

java - XPathExpression.evaluate 何时抛出?