android - 将数据从 Activity 传回已创建的 fragment

标签 android android-fragments android-activity navigation-drawer android-navigation

银行应用:

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

@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;
}

如果我单击“传输”菜单项,则会创建 TransferFragment。该 fragment 负责从一个银行账户到另一个银行账户的简单转账。我在此 fragment 中有一个“选择帐户”按钮,它开始(使用 Intent )新 Activity - ChooseAccountActivity。此 Activity 只是一个 ListView ,其中包含可用于转账的所有帐户。

在用户点击其中一个账户后,accountId (String) 应该发送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 不起作用,因为我使用的是 fragment 。 TransferFragment 已经创建,因此只有 onStart、onResume 等在返回 fragment 后被调用。

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

最佳答案

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

关于android - 将数据从 Activity 传回已创建的 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56315376/

相关文章:

java - RxJava 两个请求按顺序

Android,具有多个 Activity 的 EspressoTesting

android - 如何在 fragment 类中找到屏幕尺寸

android-fragments - RecyclerView 滚动到位置并获取该 View

android - Cocos2dxActivity闪烁

安卓 API 23 : cannot resolve FragmentActivity

android - 在android中的选项卡中设置背景图片

android - 将复杂对象从 Activity 传递到 fragment 对话框,反之亦然

java - 停止 Android 后退按钮重新启动 Activity

c# - Xamarin Android - 从另一个 Activity 更新一个 Activity 的 UI 控制