[英]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.