開發一個好專案:二、actvity簡便跳轉,建立選單按鈕,正確使用fr

qianby發表於2021-09-09

這篇文章是上一篇的繼續,你可以先看這篇: 框架地址 希望大家能多多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部落格 ” ,連結:http://blog.itpub.net/3549/viewspace-2798146/,如需轉載,請註明出處,否則將追究法律責任。

相關文章