银行应用:
我有一个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 。此活动只是一个listView,其中包含可用于从中进行转帐的所有帐户。
用户单击其中一个帐户后,应将accountId(字符串)发送给返回到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..。
任何技巧或建议如何将数据从活动传递到已创建的片段?我是对的还是应该改变想法?
答案 0 :(得分:1)
您可以在TransferFragment中使用startActivityForResult
来启动ChooseAccountActivity,并在TransferFragment中覆盖onActivityResult
以获取accountId。
请务必阅读this以获取片段中的结果。