现在的位置: 首页 > 综合 > 正文

Fragment学习之Fragment与menu结合使用

2018年06月05日 ⁄ 综合 ⁄ 共 5089字 ⁄ 字号 评论关闭

Fragment的应用非常广泛,现在结合menu来使用看看效果。

MainActivity.java代码:

public class MainActivity extends FragmentActivity {

	private FragmentManager manager;
	private FragmentTransaction transaction;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		/*获取manager*/
		manager = this.getSupportFragmentManager();
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
	
	/**
	 * 菜单点击事件
	 */
	public boolean onOptionsItemSelected(MenuItem item) {

		/*创建事物*/
		transaction = manager.beginTransaction();
		
		switch (item.getItemId()) {
		case R.id.sys:
			
			SysFragment sysFragment = new SysFragment();
			/*替换*/
			transaction.replace(R.id.main, sysFragment, "sysFragment");
			transaction.addToBackStack("sysFragment");
			break;
			
		case R.id.user:
			
			UserFragment userFragmnet = new UserFragment();
			transaction.replace(R.id.main, userFragmnet, "userFragmnet");
			transaction.addToBackStack("userFragmnet");
			break;
			
		case R.id.product:
			
			ProductFragment productFragment = new ProductFragment();
			transaction.replace(R.id.main, productFragment, "productFragment");
			transaction.addToBackStack("productFragment");
			break;
		}
		/*提交事物*/
		transaction.commit();
		
		return super.onOptionsItemSelected(item);
	}

}

ProductFragment.java代码:

public class ProductFragment extends ListFragment {

	/*定义适配器*/
	private ArrayAdapter<String> adapter = null;
	
	public ProductFragment() {
		// TODO Auto-generated constructor stub
	}

	/*创建数据源*/
	public List<String> getData() {
		
		List<String> list = new ArrayList<String>();
		for (int i = 0; i < 30; i++) {
			list.add("廖泽民" + i);
		}
		return list;
	}
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
	}
	
	/**
	 * 因为我们使用了自定义的视图,所以,设置适配器一定要在这个方法里面
	 */
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
		
		/*动态加载布局*/
		View view = inflater.inflate(R.layout.product, null);
		/*创建适配器*/
		adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, getData());
		/*设置适配器*/
		this.setListAdapter(adapter);
		
		return view;
	}
	
	@Override
	public void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
	}
}

SysFragment.java代码:

public class SysFragment extends Fragment {

	public SysFragment() {
		// TODO Auto-generated constructor stub
	}

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
		View view = inflater.inflate(R.layout.sys, null);
		return view;
	}

	@Override
	public void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
	}

}

UserFragment.java代码:

public class UserFragment extends Fragment {

	public UserFragment() {
		// TODO Auto-generated constructor stub
	}

	@Override
	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
		View view = inflater.inflate(R.layout.user, null);
		return view;
	}

	@Override
	public void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
	}

}

菜单:main.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item 
        android:id="@+id/sys"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:title="系统管理"/>

    <item 
        android:id="@+id/user"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:title="用户管理"/>
    
    <item 
        android:id="@+id/product"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:title="产品管理"/>
</menu>

activiti_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

</RelativeLayout>

product.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@id/android:list"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#00FF00"
        android:drawSelectorOnTop="false" />

</LinearLayout>

sys.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="系统管理主界面"
        android:textSize="30sp" />

</LinearLayout>

user.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="用户管理主界面"
        android:textSize="30sp" />

</LinearLayout>

demo结果展示:

抱歉!评论已关闭.