银行应用:
我有一个包含更多 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/