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
I have no idea how to execute new SlidingMenu(this)
only once to implement SlidingMenu. Please help, thanks.