2013-04-04 2 views
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. 
} 
}); 
+0

Является ли это на самом деле Фрагмент добавлен в задней стеке? – Egor

+0

Да, этот фрагмент также содержит кнопку «Назад» и по щелчку того, что у меня есть: 'getActivity(). GetSupportFragmentManager(). PopBackStack();', который отталкивает меня назад. –

ответ

0

Вы можете попытаться удалить фрагмент после того как вы посылаете почту (фиксированный):

getActivity().getSupportFragmentManager().beginTransaction().remove(MailFragment.this).commit(); 

Но помните, что он может быть удален только если он был добавлен динамически с использованием FragmentTransaction и метода .add(). Если фрагмент был добавлен в XML, метод удаления не будет работать.

Чтобы добавить фрагмент динамически, вы должны сделать это:

MailFragment mailFragment = new MailFragment(); 

FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
fragmentTransaction.add(R.id.containerForFragments, mailFragment).commit(); 

Затем вы можете удалить этот фрагмент с помощью метода .remove().

Кстати, вместо удаления фрагмента можно попытаться просто скрыть его (не будет удален из памяти):

getActivity().getSupportFragmentManager().beginTransaction().hide(MailFragment.this).commit(); 
+0

Это дает мне синтаксическую ошибку: getActivity(). GetSupportFragmentManager(). Remove (MailFragment.this); '. Метод remove (MailFragment) не определен для типа FragmentManager. –

+0

Извините, я пропустил что-то в ответе, пожалуйста, попробуйте сейчас. –

+0

см. Обновленный ответ. –