青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Codejie's C++ Space

Using C++

EL : Fragment and FragmentManager


    考慮到為了減少UI的'刷新效果',EL使用Fragment來代替常規的Activity方式.
    Fragment代替Activity的好處很多,比如沒有不同UI間切換的'閃動',視覺是上也有加快顯示的效果.但這種效果也是有代價的, 大量Activity方式下的工作,在Fragment時,不得不自己來實現,比如UI的'壓棧'等等.
    這里記錄下EL實現中,碰到的跟Fragment相關的問題. (Fragment相關文檔的官方鏈接在這里)

    1. 參數傳遞
        Activity切換時,可以在StartActivity()時,通過Intent的方式將所需參數傳遞給下一個Activity. 但在Fragment方式下就不行了,此時可使用/參考Fragment支持的setArguments()和getArguments(). EL中所有Fragment都繼承于BaseFragment,在顯示Fragment時,使用設計的OnArgument()接口傳遞參數.
        fragment.onArguments(args);
        fragmentManager.beginTransaction().show(fragment).commit();

    2. 界面切換
        FragmentManager是用于管理Fragment的類,通過內部的FragmentTranscation對象實現Fragment的加載/顯示/隱藏/移除等操作. EL實現中,使用FragmentSwitcher類封裝了FrangmentManager,以實現某些更靈活的Fragment管理,比如某些Fragment在被切換是需要刪除,而其他的僅需要隱藏等操作.
    public enum Type {
        
        LIST("list", false), SHOW("show", false), ABOUT("about", true), SETTING("setting", true),
        DOWNLOAD("download", true);
        
        private final String title;
        private final boolean removed;
        
        private Type(final String title, boolean removed) {
            this.title = title;
            this.removed = removed;
        }
        
        public String getTitle() {
            return title;
        }

        public boolean hasRemoved() {
            return removed;
        }
        
        public static Type getType(final String title) {
            if (title.equals(LIST.getTitle())) {
                return LIST;
            } else if (title.equals(SHOW.getTitle())) {
                return SHOW;
            } else {
                return null;
            }
        }
        
    }

    public boolean show(Type type, Bundle args) {
        if (curType != null) {
            if (curType == type) {
                ((BaseFragment) fragmentManager.findFragmentByTag(type.getTitle())).onArguments(args);                
                return true;
            } else {
                hide(curType);
            }
        }
        
        BaseFragment fragment = (BaseFragment) fragmentManager.findFragmentByTag(type.getTitle());
        if (fragment == null) {
            fragment = create(type);
            if (fragment == null) {
                return false;
            }
        }
        
        fragment.onArguments(args);
        fragmentManager.beginTransaction().show(fragment).commit();
        curType = type;
        
        return true;
    }

    3. Fragment的棧
        Activity在切換時,通常情況下可以通過BACK鍵返回前一個Activity,是因為存在一個'棧'來存放前面的Activity. Fragment也有棧的概念,但在操作上就需要自己主動調用了 -- Fragment隱藏時,壓棧; Fragment退出時,出棧.
    private void hide(Type type) {
        BaseFragment fragment = (BaseFragment) fragmentManager.findFragmentByTag(type.getTitle());
        if (fragment != null) {
            if (type.hasRemoved()) {
                fragmentManager.beginTransaction().remove(fragment).commit();
            } else {
                FragmentTransaction ft = fragmentManager.beginTransaction();
                ft.addToBackStack(type.getTitle());
                ft.hide(fragment);
                ft.commit();
//                fragmentManager.beginTransaction().hide(fragment).commit();
            }
            
            curType = null;            
        }
    }

    public boolean showPrevFragment() {
        int count = fragmentManager.getBackStackEntryCount();
        if (count > 0) {
            String name = fragmentManager.getBackStackEntryAt(count - 1).getName();
            fragmentManager.popBackStack();// .popBackStackImmediate();
            Type type = Type.getType(name);
            if (type != null) {
                show(type);
                return true;
            }
        }
        
        return false;
    }


    總的來說,Fragment要想用著方便,自己使用FragmentSwitcher和BaseFragment來封裝下FragmentManager和Fragment還是不錯的選擇.

    Fragment看起來很美,用起來真是發瘋啊.上面這些都是實現EL中碰到的問題,這里做下記錄,怕回頭又忘記'痛苦地翻文檔'的日子...

    另,EL基本完工,這兩天可發布Alpha版了...

posted on 2013-08-11 10:08 codejie 閱讀(1923) 評論(0)  編輯 收藏 引用 所屬分類: 隨筆而已G7

公告

Using C++

導航

統計

留言簿(73)

隨筆分類(513)

積分與排名

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品99久久久久久久女警| 久久久综合网站| 一本色道久久综合狠狠躁篇怎么玩 | 欧美在线一级视频| 免费在线播放第一区高清av| 国产午夜精品一区理论片飘花 | 久久国产精品99国产| 亚洲精品欧美| 欧美激情网站在线观看| 亚洲国产欧美日韩另类综合| 久久亚洲国产精品一区二区| 亚洲一区二区三区中文字幕| 欧美日韩一区二区视频在线| 亚洲精品美女在线| 亚洲欧洲日韩女同| 久久久久久电影| 在线观看欧美日本| 蜜桃久久av一区| 久久一综合视频| 亚洲欧洲一区二区天堂久久| 欧美激情一区二区三区成人 | 亚洲福利视频一区| 欧美激情中文字幕一区二区| 久热精品视频在线| 亚洲精品美女久久久久| 亚洲激情视频在线观看| 欧美日韩国产综合视频在线| 亚洲先锋成人| 午夜精品福利在线| 黄色成人免费观看| 欧美第一黄色网| 欧美激情综合五月色丁香| 在线亚洲一区二区| 午夜精品久久久久久久99水蜜桃| 国产婷婷色一区二区三区在线 | 久久精品国产96久久久香蕉| 国自产拍偷拍福利精品免费一| 久久精品一区蜜桃臀影院| 欧美与欧洲交xxxx免费观看| 久久成人一区| 久久久噜噜噜久久狠狠50岁| 亚洲国产裸拍裸体视频在线观看乱了 | 亚洲尤物视频在线| 欧美一级久久久| 亚洲电影免费在线观看| 999在线观看精品免费不卡网站| 国产精品久久一卡二卡| 久久久久成人精品| 欧美精品日韩| 久久国产日本精品| 欧美激情第五页| 欧美在线国产精品| 欧美第一黄色网| 欧美专区一区二区三区| 欧美成人免费大片| 欧美在线免费看| 欧美护士18xxxxhd| 久久精品女人天堂| 欧美国产日韩在线| 久久精品视频99| 欧美—级a级欧美特级ar全黄| 亚洲视频视频在线| 久久久综合视频| 欧美一区二区私人影院日本 | 亚洲一区二区三区四区视频| 久久久久久综合| 午夜在线观看免费一区| 欧美福利专区| 免费在线欧美黄色| 国产免费亚洲高清| 亚洲国产中文字幕在线观看| 国产一区二区0| 中日韩在线视频| 亚洲看片免费| 久久这里只精品最新地址| 午夜精品久久久久| 欧美日韩精品免费看| 老鸭窝毛片一区二区三区| 国产精品女人毛片| 亚洲日本va午夜在线影院| 狠狠久久亚洲欧美| 香港成人在线视频| 亚洲免费视频成人| 欧美精品系列| 亚洲第一综合天堂另类专| 韩国一区二区三区在线观看| 亚洲一区二区三区色| 亚洲视频网站在线观看| 欧美黄色片免费观看| 欧美激情一区二区三区四区| 国产综合精品| 久久久7777| 玖玖玖免费嫩草在线影院一区| 国产偷久久久精品专区| 性色一区二区三区| 久久久久久97三级| 国产一区二区三区最好精华液| 亚洲一区国产精品| 翔田千里一区二区| 国产免费成人av| 久久精品国产亚洲一区二区| 欧美一级理论性理论a| 亚洲国产日韩欧美| 狠久久av成人天堂| 久久se精品一区精品二区| 久久久久久久性| 国产日韩一区欧美| 欧美在线网址| 欧美凹凸一区二区三区视频| 亚洲高清av| 欧美欧美全黄| 亚洲一区二区免费| 久久亚洲欧洲| 亚洲高清中文字幕| 欧美国产一区视频在线观看| 99国产精品久久久久久久成人热| 亚洲一区二区三区精品动漫| 国产欧美一区二区三区在线看蜜臀| 亚洲综合99| 另类图片综合电影| 亚洲精品小视频在线观看| 欧美日韩亚洲一区二区三区在线观看| 艳妇臀荡乳欲伦亚洲一区| 新狼窝色av性久久久久久| 国产综合香蕉五月婷在线| 欧美成人情趣视频| 一本色道88久久加勒比精品| 久久成人免费视频| 亚洲精品综合久久中文字幕| 欧美色网在线| 久久人人爽国产| 亚洲看片一区| 美女精品一区| 午夜久久黄色| 亚洲国产精品一区二区www在线| 欧美日韩小视频| 久久激情久久| 亚洲无玛一区| 亚洲电影在线播放| 欧美亚洲日本国产| 亚洲精品视频免费| 国产麻豆精品久久一二三| 久久亚洲影院| 午夜久久美女| 亚洲激情电影在线| 麻豆freexxxx性91精品| 亚洲一区免费| 亚洲人成网在线播放| 国产婷婷色一区二区三区在线| 欧美日韩大片一区二区三区| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲亚洲精品在线观看| 免费观看日韩| 久久福利一区| 亚洲女人av| 亚洲另类春色国产| 亚洲第一毛片| 激情综合色丁香一区二区| 国产精品综合久久久| 欧美日韩免费观看中文| 免费视频一区| 久久久久久高潮国产精品视| 午夜精品福利在线| 亚洲影院一区| 一区二区三区毛片| 亚洲国产另类 国产精品国产免费| 久久久久国产精品午夜一区| 午夜一区二区三视频在线观看 | 欧美日韩一区二区在线播放| 浪潮色综合久久天堂| 久久精品国产精品 | 欧美日韩中文在线| 亚洲高清不卡| 国外精品视频| 国语自产偷拍精品视频偷| 国产日韩精品一区二区三区在线 | 欧美在线观看一区二区| 一本久久a久久精品亚洲| 亚洲国产欧美另类丝袜| 亚洲精品欧美日韩专区| 亚洲夫妻自拍| 日韩亚洲一区二区| 99视频有精品| 亚洲一区二区视频在线观看| 中文在线资源观看网站视频免费不卡| 日韩一级视频免费观看在线| 99re8这里有精品热视频免费 | 久久av资源网站| 久久久久国产成人精品亚洲午夜| 久久综合九色综合久99| 欧美大片在线观看一区| 最近看过的日韩成人| 欧美黄色免费网站| 亚洲日本欧美| 亚洲最快最全在线视频| 亚洲欧美国产精品va在线观看| 亚洲欧美一区二区三区久久| 久久精品日产第一区二区| 快射av在线播放一区| 欧美日韩一区二区三区在线看|