首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将活动中的数据传回已创建的片段

将活动中的数据传回已创建的片段
EN

Stack Overflow用户
提问于 2019-05-27 00:29:01
回答 1查看 50关注 0票数 1

银行应用:

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

代码语言:javascript
复制
@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“按钮,(使用intent)启动新的activity - ChooseAccountActivity。此活动只是一个包含所有帐户的listView,这些帐户可用于从转账。

在用户单击其中一个帐户后,应该将accountId (字符串)发送回到TransferFragment,以便用户能够继续填写其他EditTexts (金额、接收者的帐户id等)。

“ChooseAccountActivity”中的方法:

代码语言:javascript
复制
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。但是意图不起作用,因为我使用的是片段。TransferFragment已创建,因此只有onStart、onResume、..在返回到片段后被调用。

如何将数据从活动传递到已经创建的片段,有什么建议吗?我这样做是对的,还是应该改变我的想法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-27 00:51:38

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56315376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档