簡體   English   中英

如何在android中保存片段狀態?

[英]How to save fragment state in android?

我有一個HomeActivity,我在那里調用片段列表。 在HomeActivity中,我有sidemenu所有片段都被加載。

現在,在這個列表中,我有一個名為HomeFragment的片段,它使用webservice顯示帶有數據的Google Map。

我想要的是我只想加載一次(第一次)片段加載Map數據,而不是每次點擊sidemenu或從任何其他片段進入。

我的HomeFragment或任何其他片段立即加載,而不是每次都加載。

你可以隱藏/顯示片段。 無需更換,刪除。 對於ex,我有2個片段FragmentFeed和FragmentNotification,我們可以隱藏/顯示或添加片段。

處理點擊菜單:

if (tabId.equals(AppConstants.FEED)) {
                    pushFragments(tabId, getFragmentFeed());
                } else if (tabId.equals(AppConstants.NOTIFICATION)) {
                    pushFragments(tabId, getFragmentNotification());
                }

處理顯示/隱藏並添加片段:

public void pushFragments(String tag, Fragment fragment) {

        FragmentManager manager = getSupportFragmentManager();
        FragmentTransaction ft = manager.beginTransaction();


        if (manager.findFragmentByTag(tag) == null) {
            ft.add(R.id.realtabcontent, fragment, tag);
        }

        Fragment fragmentFeed = manager.findFragmentByTag(TAG_FEED);
        Fragment fragmentNoti = manager.findFragmentByTag(TAG_NOTIFICATION);

        // Hide all Fragment
        if (fragmentFeed != null) {
            ft.hide(fragmentFeed);
        }
        if (fragmentNoti != null) {
            ft.hide(fragmentNoti);
        }

        // Show  current Fragment
        if (tag == TAG_FEED) {
            if (fragmentFeed != null) {
                ft.show(fragmentFeed);
            }
        }
        if (tag == TAG_NOTIFICATION) {
            if (fragmentNoti != null) {
                ft.show(fragmentNoti);
            }
        }



        ft.commitAllowingStateLoss();
    }

你應該使用兩件事。

首先onSaved你的片段實例。 填寫您想要的信息。

第二個setRetainState(true)。 這樣可以防止碎片破壞,即使它已被分離。 希望這可以幫助。

暫無
暫無

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

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