您的位置:首页 > 移动开发 > Android开发

Android FragmentStatePagerAdapter的写法

2016-06-22 22:24 429 查看
/**
*
* @描述 主页
* @项目名称 App_Shop
* @包名 com.android.shop
* @类名 MainActivity
* @author chenlin
* @date 2015年6月20日 下午9:36:50
*/
public class MainActivity extends BaseActivity implements OnQueryTextListener {
// 拖拽控件
private DrawerLayout mDrawerLayout;
// 拖拽控制器
private ActionBarDrawerToggle mDrawerToggle;
private ViewPager mViewPager;
// 页面切换器
private PagerTabStrip mTabStrip;
// tab名称
private String[] mTabNames;
// 当前fragment
private Fragment mCurrentFragment;
// 菜单fragment
private FrameLayout mMenuFragment;

@Override
public void init() {
// sendBroadcast(new Intent(KILLACTION)); 关闭activity
setContentView(R.layout.activity_main);
mTabNames = Util.getStringArray(R.array.tab_names);
}

@Override
public void initViews() {
mViewPager = (ViewPager) findViewById(R.id.vp_main);
mViewPager.setAdapter(new TabPagerAdapter(getSupportFragmentManager()));

mTabStrip = (PagerTabStrip) findViewById(R.id.pager_tab_strip);
// 设置指示器颜色
mTabStrip.setTabIndicatorColor(getResources().getColor(R.color.tabIndicator_color));

mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerlayout_main);

// 加载左侧的菜单信息
mMenuFragment = (FrameLayout) findViewById(R.id.fl_menu);
// 数据控制器
MenuHolder holder = new MenuHolder();
// 添加左菜单
mMenuFragment.addView(holder.getConvertView());
}

@Override
protected void initEvents() {
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// getSupportActionBar().setSelectedNavigationItem(position);
// 在页面切换时显示不同的加载页面
FragmentFactory.createFragment(position).show();
super.onPageSelected(position);
}
});
}

@Override
protected void initActionBar() {
// getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// 添加菜单
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
//actionBar.setDisplayShowTitleEnabled(false);//去掉标题
actionBar.setDisplayUseLogoEnabled(true);
actionBar.setDisplayShowHomeEnabled(true);
actionBar.setHomeButtonEnabled(true);
actionBar.setTitle(getResources().getString(R.string.app_title));
//actionBar.setLogo(R.drawable.icon_menu);

mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.open_drawer,
R.string.close_drawer) {
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
}

@Override
public void onDrawerOpened(View drawerView) {
}
};
// 设置控制器
mDrawerLayout.setDrawerListener(mDrawerToggle);
// 异步状态
mDrawerToggle.syncState();
}

/**
* 跳转到详情页面
*
* @param view
*/
public void toDetail(View view) {
Intent intent = new Intent(this, DetailActivity.class);
startActivity(intent);
}

/**
* 添加搜索框
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.activity_main, menu);
// if (android.os.Build.VERSION.SDK_INT >= 11) {
SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
// 设置查询监听
searchView.setOnQueryTextListener(this);
// }
return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_search) {
Toast.makeText(this, "搜索", Toast.LENGTH_LONG).show();
}
return super.onOptionsItemSelected(item) | mDrawerToggle.onOptionsItemSelected(item);
}

@Override
public boolean onQueryTextSubmit(String query) {
// TODO Auto-generated method stub
return true;// true表示执行此方法
}

@Override
public boolean onQueryTextChange(String newText) {
// TODO Auto-generated method stub
return true;
}

private class TabPagerAdapter extends FragmentStatePagerAdapter {
public TabPagerAdapter(FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int position) {
//根据位置获得当前的fragment
mCurrentFragment = FragmentFactory.createFragment(position);
return mCurrentFragment;
}

@Override
public int getCount() {
return mTabNames.length;
}

@Override
public CharSequence getPageTitle(int position) {
return mTabNames[position];
}

}

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
//显示退出对话框
showExitDialog();
return true;
}

return super.dispatchKeyEvent(event);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android Fragment