Android - Как инициализировать скользящее меню только один раз
Я использую это скользящее меню в своем проекте
https://github.com/jfeinstein10/SlidingMenu
Я добавляю это меню ко всем своим действиям. И это скользящее меню вызывает фрагмент при открытии. Как предотвратить создание нескольких фрагментов для каждого действия и вызвать, если фрагмент уже создан в заднем стеке?
Каждое из моих действий расширяет мою BaseActivity, и я инициализирую скользящее меню, подобное этому, в BaseActivity.
getSupportFragmentManager()
.beginTransaction().replace(R.id.detail, new DetailFragment())
.commit();
Спасибо
1 ответ
Я бы (по крайней мере) попытался реализовать только одно действие и заменить различные фрагменты внутри фрейма контента. Вы должны знать, что пример содержит различные подходы, из которых вы должны выбрать один;)
Таким образом, имея меню и фрагмент контента, вы можете начать, как показано ниже (сравнить ResponsiveUIActivity
тоже).
public class StartActivity extends SlidingFragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
Fragment contentFragment = InitialFragment()
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame, contentFragment).commit();
getSupportFragmentManager().beginTransaction()
.replace(R.id.menu_frame, new MenuFragment()).commit();
...
}
public void switchContent(final Fragment fragment) {
// replace fragment in content frame
...
}
Во фрагменте меню вы можете создавать новые фрагменты по выбору пользователя (сравнить BirdMenuFragment
):
public class MenuFragment extends ListFragment {
@Override
public void onListItemClick(ListView lv, View v, int position, long id) {
Fragment newContent = null;
switch (position) {
case 1 : new ThisFragment();
break;
case 2 : new ThatFragment();
break;
case 3 : new AnotherFragment();
break;
}
if (newContent != null) switchFragment(newContent);
}
private void switchFragment(Fragment fragment) {
// call StartActivity.switchContent
...
}
Наконец, клей между активностью и фрагментом меню MenuFragment.switchFragment(Fragment fragment)
а также StartActivity.switchContent(final Fragment fragment)
в то время как метод фрагмента меню вызывает метод действия для замены фрагмента содержимого во фрейме содержимого (сравните классыBirdMenuFragment
а также ResponsiveUIActivity
в примере).
Это просто схема того, как вы могли бы реализовать SlidingMenu и как вы можете заменить фрагменты в фрейме контента. Есть, конечно, некоторые проблемы, которые предстоит решить.
В любом случае, я надеюсь, что смогу немного помочь... Ура!