Я пытаюсь создать приложение для Android, которое содержит одно действие с контейнером и ящиком навигации. В initialy пустых контейнеров загружают фрагменты, которые имеют ViewPager
внутри макета вкладки, в которой я загружаю frgment с FragmentTransaction
:Обращение с backstack с фрагментами, содержащими вкладки
public static void replaceFragmentInContainer(FragmentManager fragmentManager, Fragment fragmentToShow,
boolean addToBackStack)
{
FragmentTransaction transaction = fragmentManager.beginTransaction();
if (addToBackStack)
{
transaction.addToBackStack(null);
}
transaction.replace(R.id.container, fragmentToShow);
transaction.commit();
}
Я использую фрагменты v4 с v7 ActionBar
в v7 ActionBarActivity
.
Каждый загруженный фрагмент представляет собой фрагмент, который загружает только вкладки с другими фрагментами, которые сохраняют фактическую удобство использования. Пример такого фрагмента загрузки табуляции:
public class MainFragment extends TabsFragment
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
super.onCreateView(inflater, container, savedInstanceState);
View contentView = inflater.inflate(R.layout.fragment_main, container, false);
initTabsLayout(savedInstanceState, contentView, R.id.pager);
addTab("tabspectag1", "", R.drawable.draw1, Fragment1.class, null);
addTab("tabspectag2", "", R.drawable.draw2, Fragment2.class, null);
addTab("tabspectag3", "", R.drawable.draw3, Fragment3.class, null);
return contentView;
}
Проблема, с которой я столкнулся, - это задняя часть. Когда фрагмент добавляется к стопке назад, и я нажимаю кнопку «Назад», приложение возвращается к предыдущему фрагменту, как я хочу, и сам я вижу компоновку вкладок, но содержимое вкладок пуст, как будто ничего не загружено в этой вкладке. Когда это происходит, мне удается перезагрузить содержимое вкладки только при повторном выборе этого экрана с помощью навигационного ящика.
Я попытался перекрывая onBackPressed
в деятельности:
@Override
public void onBackPressed()
{
if (getFragmentManager().getBackStackEntryCount() > 0)
{
getFragmentManager().popBackStack();
} else
{
super.onBackPressed();
}
}
, но что, как я уже сказал, это, как я получаю обратно к предыдущему фрагменту, но вкладка внутри этого фрагмента не перекрашивать фрагмент это было.
Что можно сделать для решения этой проблемы?
Поскольку я вижу таблицу вкладок исходного фрагмента в backstack, но не фрагмент внутри вкладки, возможно ли мне как-то обновить содержимое вкладки, то есть перерисовать его? Если я смогу сделать такое, то как я могу это сделать?
Я думаю, что я, возможно, сузил проблему и начал новый вопрос об этом, если вы хотите попробовать ответить на него: http://stackoverflow.com/questions/30618497/force-viewpager-to-call-getitem- когда продолжающийся вверх-The-backstack –