当前位置: 代码迷 >> Android >> 2013.12.04 (五)——— android SlidingMenu之FragmentChangeActivity
  详细解决方案

2013.12.04 (五)——— android SlidingMenu之FragmentChangeActivity

热度:62   发布时间:2016-04-28 07:11:55.0
2013.12.04 (5)——— android SlidingMenu之FragmentChangeActivity
2013.12.04 (5)——— android SlidingMenu之FragmentChangeActivity

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();	}


  相关解决方案