将 activity 中的数据传回已创建的片段
Pass data from activity back to already created fragment
银行应用:
我有一个包含更多片段的 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;
}
如果我单击 "transfer" 菜单项,则会创建 TransferFragment。该片段负责从一个银行账户到另一个银行账户的简单转账。我在此片段中有一个 "choose account" 按钮,它 启动(使用意图)新的 activity - ChooseAccountActivity。 activity 只是一个列表视图,包含所有可用于转账的帐户。
用户点击其中一个帐户后,应将 accountId(字符串)发送 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 不起作用,因为我使用的是片段。 TransferFragment 已经创建,因此只有 onStart、onResume 等在返回片段后被调用。
关于如何将数据从 activity 传递到已创建的片段的任何提示或建议?我这样做是对的还是应该改变我的想法?
您可以在 TransferFragment 中使用 startActivityForResult
来启动 ChooseAccountActivity 并在 TransferFragment 中覆盖 onActivityResult
以获取 accountId。
请务必阅读 this 以在您的片段中获取结果。
银行应用:
我有一个包含更多片段的 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;
}
如果我单击 "transfer" 菜单项,则会创建 TransferFragment。该片段负责从一个银行账户到另一个银行账户的简单转账。我在此片段中有一个 "choose account" 按钮,它 启动(使用意图)新的 activity - ChooseAccountActivity。 activity 只是一个列表视图,包含所有可用于转账的帐户。
用户点击其中一个帐户后,应将 accountId(字符串)发送 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 不起作用,因为我使用的是片段。 TransferFragment 已经创建,因此只有 onStart、onResume 等在返回片段后被调用。
关于如何将数据从 activity 传递到已创建的片段的任何提示或建议?我这样做是对的还是应该改变我的想法?
您可以在 TransferFragment 中使用 startActivityForResult
来启动 ChooseAccountActivity 并在 TransferFragment 中覆盖 onActivityResult
以获取 accountId。
请务必阅读 this 以在您的片段中获取结果。