将 activity 中的数据传回已创建的片段

Pass data from activity back to already created fragment

银行应用:

我有一个包含更多片段的 NavigationDrawerActivity。单击菜单项后创建每个片段。

@Override
public boolean onNavigationItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == R.id.nav_home) {
        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new HomeFragment()).commit();
    } else if (id == R.id.nav_transfer) {
        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new TransferFragment()).commit();
    }
    return true;
}

如果我单击 "transfer" 菜单项,则会创建 TransferFragment。该片段负责从一个银行账户到另一个银行账户的简单转账。我在此片段中有一个 "choose account" 按钮,它 启动(使用意图)新的 activity - ChooseAccountActivity。 activity 只是一个列表视图,包含所有可用于转账的帐户。

用户点击其中一个帐户后,应将 accountId(字符串)发送 BACK 到 TransferFragment,以便用户能够继续填写其他 EditText(金额,收款人的账户 ID 等)

"ChooseAccountActivity"中的方法:

public void eventAfterClickOnListViewItem() {
    accountsListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            String accountId = allAccountsList.get(position);
            //PASS accountId back to TransferFragment
            finish();
        }
    });
}

所以我需要将 数据 (accountId) 发送回 TransferFragment。但是 Intent 不起作用,因为我使用的是片段。 TransferFragment 已经创建,因此只有 onStart、onResume 等在返回片段后被调用。

关于如何将数据从 activity 传递到已创建的片段的任何提示或建议?我这样做是对的还是应该改变我的想法?

您可以在 TransferFragment 中使用 startActivityForResult 来启动 ChooseAccountActivity 并在 TransferFragment 中覆盖 onActivityResult 以获取 accountId。 请务必阅读 this 以在您的片段中获取结果。