1

I follow SlidingMenu Example to create a sliding menu:

public class MyActivity extends FragmentActivity {
    public void onCreate(Bundle savedInstanceState) {
        ......

        SlidingMenu menu = new SlidingMenu(this);
        menu.attachToActivity(this, SlidingMenu.SLIDING_WINDOW);
        menu.setMenu(R.layout.activity_fragment);

        getSupportFragmentManager()
          .beginTransaction()
          .replace(R.id.fragmentContainer, new MenuFragment())
          .commit();
    }
}

It works. But this will execute new SlidingMenu(this) everytime when navigation to this activity. I want to create SlidingMenu only once for this activtiy, so

The first modify try:

  private static SlidingMenu sSlidingMenu;
    ......
    if (sSlidingMenu == null) {
      sSlidingMenu = new SlidingMenu(this);
    }
    sSlidingMenu.attachToActivity(this, SlidingMenu.SLIDING_WINDOW);     
    sSlidingMenu.setMenu(R.layout.activity_fragment);
    ......

It works when executed first time, but it crash second time:

java.lang.IllegalStateException: This SlidingMenu appears to already be attached

I google this error tip, and found these similar questions:

Q1 StackoverFlow: This SlidingMenu appears to already be attached Androd

Q2 Github: Fix for changing content view after SlidingMenu is attached to the Activity. #324

then try

The Second modify try:

    ......
    if (sSlidingMenu == null) {
      sSlidingMenu = new SlidingMenu(this);
      sSlidingMenu.attachToActivity(this, SlidingMenu.SLIDING_WINDOW);     
    }
    sSlidingMenu.setMenu(R.layout.activity_fragment);

    getSupportFragmentManager()
      .beginTransaction()
      .replace(R.id.fragmentContainer, new MenuFragment())
      .commit();

It also crash when execute second time:

java.lang.IllegalArgumentException: No view found for id 0x7f090035 (:id/fragmentContainer) for fragment MenuFragment

A similar question

I have no idea how to execute new SlidingMenu(this) only once to implement SlidingMenu. Please help, thanks.

Community
  • 1
  • 1
Weiyi
  • 1,843
  • 2
  • 22
  • 34

0 Answers0