public class MainActivity extendsActivity{privateDrawerLayout drawerLayout;privateFrameLayout content_frame;privateListView drawer_list;
@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
drawerLayout= (DrawerLayout) findViewById(R.id.drawer_layout);//抽屉与主视图的布局
content_frame = (FrameLayout) findViewById(R.id.content_frame);//主视图(帧布局)//为左边的抽屉侧滑视图添加数据
drawer_list=(ListView) findViewById(R.id.left_drawer);//抽屉视图(ListView)
final ArrayList list=new ArrayList();for(int i=1;i<5;i++){
list.add("侧滑抽屉 "+i);
}
ArrayAdapter adapter=new ArrayAdapter(this, android.R.layout.simple_list_item_1,list);
drawer_list.setAdapter(adapter);//为抽屉列表设置监听,使得点击不同的列表项能插入不同的Fragment视图
drawer_list.setOnItemClickListener(newAdapterView.OnItemClickListener() {
@Overridepublic void onItemClick(AdapterView>parent, View view,int position, longid) {//当点击ListView条目时,动态添加一个fragment到FrameLayout(主视图)当中
Fragment contentFragment=new ContentFragment();//创建一个自定义的Fragment对象
Bundle bundle=newBundle();
bundle.putString("text", list.get(position));//将点击的内容添加到bundle中
contentFragment.setArguments(bundle);//为Fragment设置参数,将数据传送过去//得到碎片视图管理者
FragmentManager fragmentManager =getFragmentManager();//开始执行操作的对象(开启事务)
FragmentTransaction transaction =fragmentManager.beginTransaction();//表示将contentFragment视图替换id为content_frame的视图
transaction.replace(R.id.content_frame, contentFragment).commit();//替换视图并提交//将抽屉视图隐藏
drawerLayout.closeDrawer(drawer_list);
}
});//监听抽屉侧滑的打开与关闭
final String title=(String) getTitle();//获取最开始的标题
drawerLayout.setDrawerListener(newDrawerLayout.DrawerListener() {
@Overridepublic void onDrawerStateChanged(intarg0) {
System.out.println("状态改变的时候调用");
}
@Overridepublic void onDrawerSlide(View arg0, floatarg1) {//System.out.println("滑动的时候调用");
}
@Overridepublic voidonDrawerOpened(View arg0) {
getActionBar().setTitle("请选择");
System.out.println("抽屉打开的时候调用");//重绘活动条的菜单项
invalidateOptionsMenu();//使当前菜单无效,会回调onCreateOptionsMenu方法
}
@Overridepublic voidonDrawerClosed(View arg0) {
getActionBar().setTitle(title);
System.out.println("抽屉关闭的时候调用");//当抽屉关闭的时候也要去回调onCreateOptionsMenu方法,才能修改菜单项的显示
invalidateOptionsMenu();//使当前菜单无效,会回调onCreateOptionsMenu方法
}
});
}
@Overridepublic booleanonCreateOptionsMenu(Menu menu) {
System.out.println("回调onCreateOptionsMenu方法后会自动调用onPrepareOptionsMenu方法");
getMenuInflater().inflate(R.menu.main, menu);//将菜单显示出来
return super.onCreateOptionsMenu(menu);
}
@Overridepublic booleanonPrepareOptionsMenu(Menu menu) {
System.out.println("onPrepareOptionsMenu方法被调用");//判断抽屉的ListView是否打开
boolean drawerOpen =drawerLayout.isDrawerOpen(drawer_list);//如果抽屉打开了就将活动条中的搜索菜单隐藏
if(drawerOpen){
menu.findItem(R.id.action_websearch).setVisible(false);//通过菜单id找到菜单项
}else{
menu.findItem(R.id.action_websearch).setVisible(true);
}return super.onPrepareOptionsMenu(menu);
}//菜单项的点击事件
@Overridepublic booleanonOptionsItemSelected(MenuItem item) {if(item.getItemId()==R.id.action_websearch){
System.out.println("点击了搜索菜单项");
}return super.onOptionsItemSelected(item);
}
}