fragment的模板
2015-11-04 15:18
337 查看
模板一:
这个模块应该说蛮好,蛮简单,清晰
模块二:
这个模板我删了一些东西,至于资源文件,那个就自己搞了,
经过测试 这两套模板都不会导致 花屏的问题 仅供大家参考
public class MainActivity extends FragmentActivity implements View.OnClickListener{ private RelativeLayout mRlTab1,mRlTab2,mRlTab3,mRlTab4; private ImageView mIvTab1,mIvTab2,mIvTab3,mIvTab4; private TextView mTvTab1,mTvTab2,mTvTab3,mTvTab4; private FragmentManager manager; private Fragment IndexFragment,MagFragment,NewsFragment,MeFragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initEvent(); setTabSelect(0); } private void initView(){ mRlTab1=(RelativeLayout)findViewById(R.id.rl_tab1); mRlTab2=(RelativeLayout)findViewById(R.id.rl_tab2); mRlTab3=(RelativeLayout)findViewById(R.id.rl_tab3); mRlTab4=(RelativeLayout)findViewById(R.id.rl_tab4); mTvTab1=(TextView)findViewById(R.id.tv_tab1); mTvTab2=(TextView)findViewById(R.id.tv_tab2); mTvTab3=(TextView)findViewById(R.id.tv_tab3); mTvTab4=(TextView)findViewById(R.id.tv_tab4); mIvTab1=(ImageView)findViewById(R.id.iv_tab1); mIvTab2=(ImageView)findViewById(R.id.iv_tab2); mIvTab3=(ImageView)findViewById(R.id.iv_tab3); mIvTab4=(ImageView)findViewById(R.id.iv_tab4); } private void initEvent(){ mRlTab1.setOnClickListener(this); mRlTab2.setOnClickListener(this); mRlTab3.setOnClickListener(this); mRlTab4.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.rl_tab1: setTabSelect(0); break; case R.id.rl_tab2: setTabSelect(1); break; case R.id.rl_tab3: setTabSelect(2); break; case R.id.rl_tab4: setTabSelect(3); break; default: break; } } public void setTabSelect(int i) { FragmentManager manager=getSupportFragmentManager(); FragmentTransaction transaction=manager.beginTransaction(); resetTab(); switch (i) { case 0: IndexFragment=manager.findFragmentByTag("TAG1"); hideTab(transaction); if (IndexFragment == null){ IndexFragment = new IndexTabFragment(); transaction.add(R.id.content, IndexFragment,"TAG1"); } else{ transaction.show(IndexFragment); } Log.i("MainActivity","IndexFragment:"+IndexFragment.toString()); mIvTab1.setImageResource(R.drawable.index_s); mTvTab1.setTextColor(getResources().getColor(R.color.tab_text_press)); mRlTab1.setBackgroundColor(getResources().getColor(R.color.tab_select_back)); break; case 1: MagFragment=manager.findFragmentByTag("TAG2"); hideTab(transaction); if (MagFragment == null){ MagFragment = new MagTabFragment(); transaction.add(R.id.content, MagFragment,"TAG2"); } else{ transaction.show(MagFragment); } Log.i("MainActivity","MagFragment:"+MagFragment.toString()); mIvTab2.setImageResource(R.drawable.magzine_s); mTvTab2.setTextColor(getResources().getColor(R.color.tab_text_press)); mRlTab2.setBackgroundColor(getResources().getColor(R.color.tab_select_back)); break; case 2: NewsFragment=manager.findFragmentByTag("TAG3"); hideTab(transaction); if (NewsFragment == null){ NewsFragment = new NewsTabFragment(); transaction.add(R.id.content, NewsFragment,"TAG3"); } else{ transaction.show(NewsFragment); } Log.i("MainActivity","NewsFragment:"+NewsFragment.toString()); mIvTab3.setImageResource(R.drawable.picture_s); mTvTab3.setTextColor(getResources().getColor(R.color.tab_text_press)); mRlTab3.setBackgroundColor(getResources().getColor(R.color.tab_select_back)); break; case 3: MeFragment=manager.findFragmentByTag("TAG4"); hideTab(transaction); if (MeFragment == null){ MeFragment = new MeTabFragment(); transaction.add(R.id.content, MeFragment,"TAG4"); } else{ transaction.show(MeFragment); } Log.i("MainActivity","MeFragment:"+MeFragment.toString()); mIvTab4.setImageResource(R.drawable.me_s); mTvTab4.setTextColor(getResources().getColor(R.color.tab_text_press)); mRlTab4.setBackgroundColor(getResources().getColor(R.color.tab_select_back)); break; default: break; } transaction.commit(); } private void resetTab(){ mRlTab1.setBackgroundColor(getResources().getColor(R.color.tab_back)); mRlTab2.setBackgroundColor(getResources().getColor(R.color.tab_back)); mRlTab3.setBackgroundColor(getResources().getColor(R.color.tab_back)); mRlTab4.setBackgroundColor(getResources().getColor(R.color.tab_back)); mIvTab1.setImageResource(R.drawable.index); mIvTab2.setImageResource(R.drawable.magzine); mIvTab3.setImageResource(R.drawable.picture); mIvTab4.setImageResource(R.drawable.me); mTvTab1.setTextColor(getResources().getColor(R.color.tab_text)); mTvTab2.setTextColor(getResources().getColor(R.color.tab_text)); mTvTab3.setTextColor(getResources().getColor(R.color.tab_text)); mTvTab4.setTextColor(getResources().getColor(R.color.tab_text)); } private void hideTab(FragmentTransaction transaction){ if (IndexFragment != null) { transaction.hide(IndexFragment); } if (MagFragment != null) { transaction.hide(MagFragment); } if (NewsFragment != null) { transaction.hide(NewsFragment); } if (MeFragment != null) { transaction.hide(MeFragment); } } @Override protected void onSaveInstanceState(Bundle outState) { // super.onSaveInstanceState(outState); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } }
这个模块应该说蛮好,蛮简单,清晰
模块二:
/** * 整个程序最底层的框架Activity,所有的Fragment都是依赖于此Activity而存在的 * * @author dell * */ public class Main_FA extends FragmentActivity implements OnClickListener, IBtnCallListener { //新版本长度只有3个 private ImageView[] bt_menu = new ImageView[3]; // 界面底部的菜单按钮id private int[] bt_menu_id = { R.id.iv_menu_0,R.id.iv_menu_2,R.id.iv_menu_4 }; // 界面底部的选中菜单按钮资源 private int[] select_on = { R.drawable.guide_home_on,R.drawable.guide_discover_on,R.drawable.guide_account_on }; // 界面底部的未选中菜单按钮资源 private int[] select_off = { R.drawable.bt_menu_0_select,R.drawable.bt_menu_2_select,R.drawable.bt_menu_4_select }; /** 主界面 */ private Home_New_F home_F; /** 发现界面 */ /** 个人中心界面 */ private User_F user_F; //全局变量 存放用户id private CacheFunction cacheFunction;//操作缓存 private String uid; private String utype; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_fa); MyApplication.getInstance().addActivity(this); cacheFunction = new CacheFunction(this); initView(); //软件自动检测更新 UpdateApp update = new UpdateApp(this); update.update(); } // 初始化组件 private void initView() { // 找到底部菜单的按钮并设置监听 for (int i = 0; i < bt_menu.length; i++) { bt_menu[i] = (ImageView) findViewById(bt_menu_id[i]); bt_menu[i].setOnClickListener(this); } // 初始化默认显示的界面 if (home_F == null) { home_F = new Home_New_F(); addFragment(home_F); showFragment(home_F); } else { showFragment(home_F); } // 设置默认首页为点击时的图片 bt_menu[0].setImageResource(select_on[0]); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.iv_menu_0: // 主界面 if (home_F == null) { home_F = new Home_New_F(); // 判断当前界面是否隐藏,如果隐藏就进行添加显示,false表示显示,true表示当前界面隐藏 addFragment(home_F); showFragment(home_F); } else { if (home_F.isHidden()) { showFragment(home_F); } } break; case R.id.iv_menu_2: // 发现界面 if (discover_F == null) { discover_F = new Discover_F(); // 判断当前界面是否隐藏,如果隐藏就进行添加显示,false表示显示,true表示当前界面隐藏 if (!discover_F.isHidden()) { addFragment(discover_F); showFragment(discover_F); } } else { if (discover_F.isHidden()) { showFragment(discover_F); } } break; } // 设置按钮的选中和未选中资源 // 这个地方相当的不好,有错误 for (int i = 0; i < bt_menu.length; i++) { bt_menu[i].setImageResource(select_off[i]); if (v.getId() == bt_menu_id[i]) { bt_menu[i].setImageResource(select_on[i]); } } } /** 添加Fragment **/ public void addFragment(Fragment fragment) { FragmentTransaction ft = this.getSupportFragmentManager().beginTransaction(); ft.add(R.id.show_layout, fragment); ft.commit(); } /** 删除Fragment **/ public void removeFragment(Fragment fragment) { FragmentTransaction ft = this.getSupportFragmentManager().beginTransaction(); ft.remove(fragment); ft.commit(); } /** 显示Fragment **/ public void showFragment(Fragment fragment) { FragmentTransaction ft = this.getSupportFragmentManager().beginTransaction(); // 设置Fragment的切换动画 ft.setCustomAnimations(R.anim.cu_push_right_in, R.anim.cu_push_left_out); // 判断页面是否已经创建,如果已经创建,那么就隐藏掉 if (home_F != null) { ft.hide(home_F); } if (discover_F != null) { ft.hide(discover_F); } ft.show(fragment); ft.commitAllowingStateLoss(); } /** 返回按钮的监听 */ @Override public void onBackPressed() { Toast.makeText(this, "点击返回按钮", Toast.LENGTH_SHORT).show(); super.onBackPressed(); } /** Fragment的回调函数 */ @SuppressWarnings("unused") private IBtnCallListener btnCallListener; @Override public void onAttachFragment(Fragment fragment) { try { btnCallListener = (IBtnCallListener) fragment; } catch (Exception e) { } super.onAttachFragment(fragment); } /** * 响应从Fragment中传过来的消息 */ @Override public void transferMsg() { if (home_F == null) { home_F = new Home_New_F(); addFragment(home_F); showFragment(home_F); } else { showFragment(home_F); } } @Override protected void onDestroy() { MyApplication.getInstance().exit(); super.onDestroy(); } /****************退出分享的功能*********************/ private boolean okToExit =true; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){ if(okToExit){ showback(); } } return super.onKeyDown(keyCode, event); } private void showback(){ AlertDialog.Builder builder = new Builder(Main_FA.this); builder.setMessage(""); builder.setTitle(""); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); finish(); } }); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { shareApp(); } }); builder.create().show(); } protected void shareApp() { // TODO Auto-generated method stub String title = "分享"; String text = "" Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_SUBJECT, title); intent.putExtra(Intent.EXTRA_TEXT, text); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(Intent.createChooser(intent, title)); } }
这个模板我删了一些东西,至于资源文件,那个就自己搞了,
经过测试 这两套模板都不会导致 花屏的问题 仅供大家参考
相关文章推荐
- frameset中的frame高度问题
- GDB查看内存命令(x命令)
- 移动端知识转载收藏
- 比特币交易构成
- (四)JBoss-BM WebSphere MQ-ActiveMQ
- myeclipse中更改默认的编码
- Qt移植
- 【Android学习笔记】Android概述与开发环境搭建
- Simple File System
- 比特币交易构成
- 关于URLEncoder和URLDecoder
- Jquery的各个版本链接及下载
- Simple File System
- 浙江大华Android一面面试题
- 利用@media screen实现网页布局的自适应
- HashMap源码分析
- HDU 1719 Friend 找规律
- C++/C之数组篇(待完善)
- (三)ActiveMQ持久化方式
- OC 中new与alloc/init的区别