package com.jeremyfeinstein.slidingmenu.example.fragments; import android.os.Bundle; import android.support.v4.app.Fragment; import com.jeremyfeinstein.slidingmenu.example.BaseActivity; import com.jeremyfeinstein.slidingmenu.example.R; import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu; public class FragmentChangeActivity extends BaseActivity { private Fragment mContent; public FragmentChangeActivity() { super(R.string.changing_fragments); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // set the Above View if (savedInstanceState != null) mContent = getSupportFragmentManager().getFragment(savedInstanceState, "mContent"); if (mContent == null) mContent = new ColorFragment(R.color.red); // set the Above View setContentView(R.layout.content_frame); getSupportFragmentManager() .beginTransaction() .replace(R.id.content_frame, mContent) .commit(); // set the Behind View setBehindContentView(R.layout.menu_frame); getSupportFragmentManager() .beginTransaction() .replace(R.id.menu_frame, new ColorMenuFragment()) .commit(); // customize the SlidingMenu getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); getSupportFragmentManager().putFragment(outState, "mContent", mContent); } public void switchContent(Fragment fragment) { mContent = fragment; getSupportFragmentManager() .beginTransaction() .replace(R.id.content_frame, fragment) .commit(); getSlidingMenu().showContent(); } }
package com.jeremyfeinstein.slidingmenu.example.fragments; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.ListFragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ListView; import com.jeremyfeinstein.slidingmenu.example.R; public class ColorMenuFragment extends ListFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.list, null); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); String[] colors = getResources().getStringArray(R.array.color_names); ArrayAdapter<String> colorAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, android.R.id.text1, colors); setListAdapter(colorAdapter); } @Override public void onListItemClick(ListView lv, View v, int position, long id) { Fragment newContent = null; switch (position) { case 0: newContent = new ColorFragment(R.color.red); break; case 1: newContent = new ColorFragment(R.color.green); break; case 2: newContent = new ColorFragment(R.color.blue); break; case 3: newContent = new ColorFragment(android.R.color.white); break; case 4: newContent = new ColorFragment(android.R.color.black); break; } if (newContent != null) switchFragment(newContent); } // the meat of switching the above fragment private void switchFragment(Fragment fragment) { if (getActivity() == null) return; if (getActivity() instanceof FragmentChangeActivity) { FragmentChangeActivity fca = (FragmentChangeActivity) getActivity(); fca.switchContent(fragment); } else if (getActivity() instanceof ResponsiveUIActivity) { ResponsiveUIActivity ra = (ResponsiveUIActivity) getActivity(); ra.switchContent(fragment); } } }
这个例子主要介绍了,如何实现主界面fragmen的切换
1、在侧边栏的Fragment里面
private void switchFragment(Fragment fragment) { if (getActivity() == null) return; if (getActivity() instanceof FragmentChangeActivity) { FragmentChangeActivity fca = (FragmentChangeActivity) getActivity(); fca.switchContent(fragment); } else if (getActivity() instanceof ResponsiveUIActivity) { ResponsiveUIActivity ra = (ResponsiveUIActivity) getActivity(); ra.switchContent(fragment); } }
调用上层activity的switchContent方法
public void switchContent(Fragment fragment) { mContent = fragment; getSupportFragmentManager() .beginTransaction() .replace(R.id.content_frame, fragment) .commit(); getSlidingMenu().showContent(); }