Скользящее меню с использованием фрагментов

Я использую библиотеку 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, используя его глобальную ссылочную переменную.

Полный пример и пример кода приведены здесь.

Удачи:)

Другие вопросы по тегам