Скользящее меню с использованием фрагментов
Я использую библиотеку com.slidingmenu.lib.
У меня есть мое скользящее меню, представленное фрагментом. Я изо всех сил пытаюсь увидеть, как фрагмент в скользящем меню может взаимодействовать с активностью, в которой размещается скользящее меню.
Как это работает? Я подозреваю, что мне нужна какая-то форма слушателя, но не могу решить, это будет работать.
4 ответа
Я использую это на моем фрагменте;)
getActivity().setContentView(R.layout.main);
SlidingMenu menu = new SlidingMenu(getActivity());
menu.setMode(SlidingMenu.LEFT);
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
menu.setShadowWidthRes(R.dimen.shadow_width);
menu.setShadowDrawable(R.drawable.shadow);
menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
menu.setFadeDegree(0.35f);
menu.attachToActivity(getActivity(), SlidingMenu.SLIDING_CONTENT);
menu.setMenu(R.layout.menu);
Скользящее меню представляет собой фрагмент, как и любой другой.
Вызовите getActivity, чтобы получить ссылку на активность хоста.
Вам нужно переопределить метод onAttach() в вашем фрагменте (slideMenu) и получить ссылку на действие, к которому он прикреплен. Когда вы получаете действие, вы должны уменьшить ссылку на ваш конкретный класс (имя действия, которое расширяет Activity), чтобы иметь возможность вызывать любой открытый метод, который вы объявили в Activity.
Пример:
public class MyActivity extends Activity{
// This activity has the sliding menu attached
public void methodX(){// Do your stuff}
}
class MyFragment extends Fragment{
MyActivity parent;
@Overide
public void onAttach(Activity a){
super.onAttach(a)
parent = (MyActivity) a;
a.methodX();
}
}
Вы можете достичь этого путем
1) Создание пользовательского интерфейса Java, скажем, InterfaceX, который может иметь методы, специфичные для вашего Fragment
и делает Activity
реализовать этот интерфейс и предоставить определения для методов этого интерфейса в вашей деятельности.
2) В ролях Activity
что передается в onAttach()
(Вам нужно переопределить фрагменты onAttach()
метод) для InterfaceX.
3) Вы можете вызывать методы InterfaceX, используя его глобальную ссылочную переменную.
Полный пример и пример кода приведены здесь.
Удачи:)