簡體   English   中英

使用導航抽屜的Android片段狀態

[英]Android fragment state using navigation drawer

我正在創建一個將從Windows Phone 8移植到android的應用程序。 我對android開發的知識是有限的。

我正在使用導航抽屜。 我已經完成了一些實現,我面臨的問題是在它們之間切換時恢復視圖狀態。

我正在使用arcgis android sdk。 視圖1:從互聯網獲取的列表視圖中的地理空間數據。 視圖2:顯示視圖和在視圖1中選擇(點按)的位置的地圖。視圖3:用於增加或減小半徑以從視圖1提取項目的設置視圖。

在視圖之間切換時,我希望視圖保持其狀態(還原狀態)。

在這種情況下,最佳做法是什么? 現在我正在使用片段。 問題是,在切換片段時,onSaveInstanceState沒有被調用。

這是我切換片段的代碼,它根本無法很好地工作:)

private void selectItem(int position) {
    // Create a new fragment and specify the planet to show based on position
    Fragment f;
    FragmentTransaction ft = fragManager.beginTransaction();
    switch(position) {
    case 0: 
        if((f = fragManager.findFragmentByTag("home")) == null) {
            f = Fragment.instantiate(this, HomeFragment.class.getName());
            f.setRetainInstance(true);
            ft.add(R.id.content_frame, f, "home");
        } else {
            ft.attach(f);
        }
        break;
    case 1:
        if((f = fragManager.findFragmentByTag("map")) == null) {
            f = Fragment.instantiate(this, MapFragment.class.getName());
            f.setRetainInstance(true);
            ft.add(R.id.content_frame, f, "map");
        } else {
            ft.attach(f);
        }
        break;
    case 2:
        if((f = fragManager.findFragmentByTag("settings")) == null) {
            f = Fragment.instantiate(this, SettingsFragment.class.getName());
            f.setRetainInstance(true);
            ft.add(R.id.content_frame, f, "settings");
        } else {
            ft.attach(f);
        }
        break;
    }
    ft.commit();
    // Highlight the selected item, update the title, and close the drawer
    mDrawerList.setItemChecked(position, true);
    setTitle(tabs[position]);
    mDrawerLayout.closeDrawer(mDrawerList);

}

這是還原片段狀態的示例代碼:

public void addFragments(Fragment fragment, 
        boolean addToBackStack, String tag) {

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

    if (addToBackStack) {
        ft.addToBackStack(tag);
    }
    ft.replace(R.id.content_frame, fragment);
    ft.commit();
}

片段=您要替換的片段。

暫無
暫無

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

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