ITPub博客

首页 > IT职业 > IT生活 > 开发一个好项目:二、actvity简便跳转,创建菜单按钮,正确使用fr

开发一个好项目:二、actvity简便跳转,创建菜单按钮,正确使用fr

IT生活 作者:qianby 时间:2021-09-09 08:57:23 0 删除 编辑

这篇文章是上一篇的继续,你可以先看这篇: “android开发(如何开发一个可以维护的好项目):一 、定义基类” 框架地址dileber android框架 希望大家能多多star一下

首先我把我写的这个首页拿出来,这个首页主要是有4个按钮。
图片描述

跳转activity方法,将跳转作为一个静态函数,来处理,跳转简单,日后可以在这里直接添加跳转所需要的参数,减少代码改动量。方便美观。推荐使用~

public static void start(Context context){
        Intent intent = new Intent();
        intent.setClass(context,HomeActivity.class);
        context.startActivity(intent);
    }

layout xml直接写在一个方法里,其实也没啥太大用处

    protected int layoutViewId() {
        return R.layout.activity_home;
    }

配置titlebar,我把titlebar做成一个类,里面直接就能调用titlebar,还可以直接设置点击事件。

 UToolBar uToolBar = new UToolBar();
        uToolBar.setTitleId(R.string.takkyuu_home);
        uToolBar.setNeedNavigate(false);
        setToolBar(R.id.toolbar,uToolBar);

注意配置titlebar时候 xml里必须有 titlebar的配置

底部菜单使用方式,里面采用的是字体图表的配置,如果大家不知道的话,请看我的上一篇文章。

mBar= getView(R.id.bar);
//设置字体为 R.string.home3  字体的类型为 BottomBarTab.TYPE_FONT
        mBar.addItem(new BottomBarTab(this,R.string.home3,BottomBarTab.TYPE_FONT)).
                addItem(new BottomBarTab(this,R.string.tree,BottomBarTab.TYPE_FONT)).
                addItem(new BottomBarTab(this,R.string.m_search,BottomBarTab.TYPE_FONT)).
                addItem(new BottomBarTab(this,R.string.user,BottomBarTab.TYPE_FONT));
        mBar.setOnClickItemMenu(new BottomBar.OnClickItemMenu() {
            @Override
            public void onClickItem(int nowPosition,int position) {

            }
        });

如何正确的加载fragment,我封装好了一个ActivityUtils方法,里面还有其他方法,大家可以看看,对fragment先进行查找,如果没有的话,再进行新增,提高的性能效率

HomeFragment homeFragment = ActivityUtils.getFragment(getSupportFragmentManager(),R.id.homeFrame,HomeFragment.newInstance());

如下贴出整个代码。
xml

activity~这个activity是继承了我上一个文章里写的TBaseActivity

public class HomeActivity extends TBaseActivity implements TakkyuuBaseFragment.OnFragmentInteractionListener{

    public static void start(Context context){
        Intent intent = new Intent();
        intent.setClass(context,HomeActivity.class);
        context.startActivity(intent);
    }

    @Override
    protected void startView(Bundle savedInstanceState) {

    }

    @Override
    protected int layoutViewId() {
        return R.layout.activity_home;
    }
    private final static String SELECT = "select";
    BottomBar mBar;
    Fragment temp;
    @Override
    protected void initView(final Bundle savedInstanceState) {
        UToolBar uToolBar = new UToolBar();
        uToolBar.setTitleId(R.string.takkyuu_home);
        uToolBar.setNeedNavigate(false);
        setToolBar(R.id.toolbar,uToolBar);
        mBar= getView(R.id.bar);
        mBar.addItem(new BottomBarTab(this,R.string.home3,BottomBarTab.TYPE_FONT)).
                addItem(new BottomBarTab(this,R.string.tree,BottomBarTab.TYPE_FONT)).
                addItem(new BottomBarTab(this,R.string.m_search,BottomBarTab.TYPE_FONT)).
                addItem(new BottomBarTab(this,R.string.user,BottomBarTab.TYPE_FONT));
        mBar.setOnClickItemMenu(new BottomBar.OnClickItemMenu() {
            @Override
            public void onClickItem(int nowPosition,int position) {

            }
        });

        HomeFragment homeFragment = ActivityUtils.getFragment(getSupportFragmentManager(),R.id.homeFrame,HomeFragment.newInstance());
        ConsFragment consFragment = ActivityUtils.getFragment(getSupportFragmentManager(),R.id.consFrame,ConsFragment.newInstance("3","2"));
        SearchFragment searchFragment = ActivityUtils.getFragment(getSupportFragmentManager(),R.id.searchFrame,SearchFragment.newInstance());
        PeopleFragment peopleFragment = ActivityUtils.getFragment(getSupportFragmentManager(),R.id.peopleFrame,PeopleFragment.newInstance());

//这是后续的MVP模式开发,后续我会继续讲解。
        new HomePresenter(homeFragment,SysRepository.getInstance());
        new PeoplePresenter(peopleFragment,SysRepository.getInstance());
        new SearchPresenter(searchFragment,SysRepository.getInstance());
//屏幕翻转,记录状态
        if(savedInstanceState!=null){
            mBar.setCurrentItem(savedInstanceState.getInt(SELECT));
        }

    }
//屏幕翻转,记录状态
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        outState.putInt(SELECT,mBar.getmCurrentPosition());
        super.onSaveInstanceState(outState);
    }

//fragment与activity交互 后续会讲解
    @Override
    public SFont onRightButtonFont(Integer res) {
        String text = "";
        if(res!=null){
            text = getResources().getString(res);
        }
        SFont sFont = getView(R.id.toolbar_bar_right);
        sFont.setText(text);
        return sFont;
    }
//fragment与activity交互 后续会讲解
    @Override
    public void onTitleName(String title) {
        setTitle(title);
    }
//重写退出按钮处理函数。
    @Override
    public void onBackPressed() {
        dialogOk("确定要退出么", new DialogLinstener() {
            @Override
            public void confirm(Dialog dialog) {
                dialog.dismiss();
                HomeActivity.super.onBackPressed();
            }

            @Override
            public void cancel(Dialog dialog) {
                dialog.dismiss();
            }
        });

    }
}

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3549/viewspace-2798146/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-08-27

  • 博文量
    75
  • 访问量
    21661