【发布时间】:2019-05-26 16:29:01
【问题描述】:
银行应用:
我有一个具有更多片段的 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;
}
如果我单击“传输”菜单项,则会创建 TransferFragment。这个片段负责从一个银行账户到另一个银行账户的简单汇款。我在这个片段中有一个“选择帐户”按钮,它启动(使用意图)新活动 - ChooseAccountActivity。此活动只是一个列表视图,其中包含可用于从中转移资金的所有帐户。
用户点击其中一个账户后,accountId (String) 应该被发送BACK 到 TransferFragment,以便用户能够继续填写其他 EditTexts(金额、接收者的账户 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,.. 在返回片段后被调用。
任何提示或建议如何将数据从活动传递到已创建的片段?我这样做是对的还是应该改变我的想法?
【问题讨论】:
标签: android android-fragments android-activity navigation-drawer android-navigation