2017-05-04 33 views
0

我正在添加一個功能,該功能允許用戶在兩​​個不同的主屏幕之間進行選擇。請注意,這兩個屏幕都有非常不同的感覺。如何根據用戶的喜好在兩個不同的片段之間切換主頁片段

我目前的設置是有兩個獨立的片段Home1Fragment和Home2Fragment,它們都擴展了一個名爲HomeFragment的抽象類。用戶將默認使用Home1Fragment,直到他們更改設置頁面中的首選項。

我已經實現了這兩個片段,並且如果它們作爲主屏幕獨立運行,它們都能正常工作。

我試着將它們從一個片段切換到另一個片段時出現問題。我已經通過

@Override 
public void onBackPressed() { 
    FragmentManager fragmentManager = getFragmentManager(); 

    if(fragmentManager.getBackStackEntryCount() > 1) { 
     fragmentManager.popBackStackImmediate(); 

     int option = getSharedPreferences('**hidden**', MODE_PRIVATE).get('home_screen_option', 0); 
     Fragment fragment = fragmentManager.findFragmentById(R.id.content); 
     if(fragment != null && fragment instanceof HomeFragment) { 
      if(f instanceof Home1Fragment && option == HOME_2) { 
      f = new Home2Fragment(); 
      } else if (f instanceof Home2Fragment && option == HOME_1) { 
      f = new Home1Fragment(); 
      } 
     } 
    } else { 
     finish(); 
    } 
} 

想這有可能是在上面的代碼中的錯別字,因爲我寫的飛行沒有在我面前的真正的代碼。

+0

你的代碼有什麼問題?片段沒有顯示? –

回答

0

你實際上並沒有在你的代碼中設置新的片段。

但我會選擇一種基於保存狀態的不同方法(例如共享首選項中的設置),並由主屏幕本身處理(而不是我主張的背堆棧操作)。

選項1.

請想一想,如果你的主屏幕可單獨Activity。這樣,您可以在Activity開始時根據存儲在SharedPreferences中的值加載正確的片段。

選項2

幾乎同樣的事情,只是用一個嵌套的片段。讓您的主屏幕爲Fragment併爲其佈局中的子片段添加容器。然後,只需使用子片段管理器相應地加載正確的視圖。