У меня есть деятельность, MainActivity
, которая обменивается между семью фрагментами. Фрагменты не имеют определенного порядка, поэтому, когда приложение запускается и деятельность первых создан, я установить один по умолчанию/стартовый экран:Перемещение между видами деятельности и освежающими видами
FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.fragmentDrawerContainer);
if (fragment == null)
{
fm.beginTransaction()
.add(R.id.fragmentDrawerContainer, new DefaultFragment())
.commit();
// An int I use to track which Fragment is currently being viewed,
// for navigation drawer purposes
mCurrentPosition = DEFAULT_FRAGMENT_POSITION;
}
панели навигации, пользователь может перейти на новый активность, SettingsActivity
, в которой размещается PreferenceFragment
для изменения определенных параметров, таких как единицы измерения (метрические или имперские) и цветовые темы.
// Standard navigation from one activity to another from inside selectItem() method of nav drawer
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
После того, как пользователь переходит обратно в MainActivity
из SettingsActivity
, либо сзади или кнопки вверх, мне нужно две вещи случаются:
1) фрагмент пользователь смотрел на последний еще должен быть там. В настоящее время активность перезаряжается DefaultFragment
(потому что, как я думаю, активность воссоздана).
2) Каждый фрагмент содержит настраиваемый вид я написал, а представление должно обновляться, используя значения из SharedPreferences
после возвращения пользователя из SettingsActivity
.
Чтобы решить # 1, я попытался использовать android:launchMode="singleTop"
, который работает, но я не могу получить представление для обновления, если не переключусь на другой фрагмент, а затем вернусь.
Я пытался позвонить myView.invalidate()
в методе фрагментов onResume()
, но он не работает.
Любые идеи? Пожалуйста, дайте мне знать, если я не понял. Заранее спасибо!
использовать backstack, чтобы увидеть, кто в настоящее время отображается несколько сообщений [0] (http://stackoverflow.com/questions/30416815/can-i-put-a-fragment-on-backstack-which-hasnt-been-initialized -yet/30417083 # 30417083), [1] (http://stackoverflow.com/questions/30686186/android-show-back-button-depending-on-backstack-count/30686674#30686674), [2] (http : //stackoverflow.com/questions/30493716/is-there-a-way-to-listen-to-fragmenttransactions-of-a-fragmentmanager/30493931#30493931) .. некоторые из них косвенны. я думаю, вы вызываете его на неправильном фрагменте – Elltz