前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >fragment的模板

fragment的模板

作者头像
wust小吴
发布2022-03-07 14:24:15
1.2K0
发布2022-03-07 14:24:15
举报
文章被收录于专栏:风吹杨柳风吹杨柳

模板一:

代码语言:javascript
复制
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;
	}


}

这个模块应该说蛮好,蛮简单,清晰

模块二:

代码语言:javascript
复制
/**
 * 整个程序最底层的框架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));
	}


}

这个模板我删了一些东西,至于资源文件,那个就自己搞了,

经过测试 这两套模板都不会导致 花屏的问题 仅供大家参考

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档