0

我有一个带有发送按钮的片段。

单击发送按钮后,将启动从设备选择电子邮件客户端的活动。

一旦我们选择了电子邮件客户端并发送了邮件,它就会按预期再次返回到片段。

但是当我们的邮件发送任务完成时,不需要有片段视图。

所以我们想在邮件发送成功后回到之前的活动。

怎么做?

我试过:

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.
}
});
4

1 回答 1

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();
于 2013-04-04T08:27:21.690 回答