簡體   English   中英

如何在導航抽屜中保存片段狀態

[英]How to save state of fragment in navigation drawer

我正在通過以下鏈接使用Google導航抽屜庫... https://github.com/Arasthel/GoogleNavigationDrawerMenu

參見下面的代碼:

    mDrawer.setOnNavigationSectionSelected(new GoogleNavigationDrawer.OnNavigationSectionSelected() {
        @Override
        public void onSectionSelected(View v, int i, long l) {
            Fragment fragment = null;
            switch (i) {
            case 0:
                // fragment = new HomeFragment();
                break;
            case 1:
                fragment = new NewsFragment();

                break;
            case 2:
                fragment = new TransferFragment();
                break;
            case 3:
                fragment = new BlogsFragment();
                break;
            case 4:
                fragment = new FixturesFragment();
                break;
            case 5:
                fragment = new BestXIFragment();
                break;
            case 6:
                fragment = new FeedFragment();

                break;

            default:
                break;
            }
            if (fragment != null) {
                FragmentManager fragmentManager = getFragmentManager();
                fragmentManager.beginTransaction()
                        .replace(R.id.main, fragment).commit();

            } else {
                // error in creating fragment
                Log.e("MainActivity", "Error in creating fragment");
            }
        }
    });

我的片段正在使用異步任務,每當我在這些片段之間切換時,異步任務就會再次加載。

那么,如何保存片段的狀態?

無需每次都創建一個新片段,而是可以保留一個片段數組並只返回相同的對象:

mDrawer.setOnNavigationSectionSelected(new GoogleNavigationDrawer.OnNavigationSectionSelected() {

Fragment[] fragments ={new HomeFragment(),new NewsFragment(),  new TransferFragment(), new BlogsFragment(),new FixturesFragment() , new BestXIFragment(),new FeedFragment()};
 @Override

    public void onSectionSelected(View v, int i, long l) {

        if (fragment[i] != null) {
            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.main, fragments[i]).commit();

        } else {
            // error in creating fragment
            Log.e("MainActivity", "Error in creating fragment");
        }
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM