我有一个有发送按钮的片段。
点击发送按钮后,活动开始从设备中选择电子邮件客户端。
一旦我们选择了电子邮件客户端并发送邮件,它就会按预期再次返回到片段。
但是我们的邮件发送任务已经完成,因此无需片段视图。
因此,我们希望在邮件成功发送后返回上一个活动。
怎么做?
我试过了:
getActivity().getSupportFragmentManager().popBackStack();
但这没效果。
点击发送按钮的代码是:
view.findViewById(R.id.sendbtn).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
startActivityForResult(Intent.createChooser(email, "Choose an Email client :"),2);
getActivity().getSupportFragmentManager().popBackStack(); //this is not working to go back.
}
});
答案 0 :(得分:0)
您可以尝试在发送邮件后删除片段(已修复):
getActivity().getSupportFragmentManager().beginTransaction().remove(MailFragment.this).commit();
但请记住,只有使用FragmentTransaction
和.add()
方法动态添加它才能将其删除。如果片段是以XML格式添加的,则remove方法将无效。
要动态添加片段,您应该这样做:
MailFragment mailFragment = new MailFragment();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.containerForFragments, mailFragment).commit();
然后,您可以通过.remove()
方法删除此片段。
顺便说一下,你可以尝试隐藏它(不会从内存中删除)而不是删除片段:
getActivity().getSupportFragmentManager().beginTransaction().hide(MailFragment.this).commit();