2

在我的Android應用程序中,我使用帶有標籤的操作欄在顯示標籤內容的碎片之間切換。一切正常,直到方向改變:然後Android開始繪製小部件在彼此之上,以便碎片的內容混合起來。我TabListener方向變更後碎片中的重疊小部件

private class TabListener implements ActionBar.TabListener { 
    private final Activity mActivity; 
    private final String mTag; 

    public TabListener(Activity activity, String tag) { 
     mActivity = activity; 
     mTag = tag; 
    } 

    @Override 
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { 
     Fragment mFragment = MyActivity.this.getSupportFragmentManager().findFragmentByTag(mTag); 
     if (mFragment == null) { 
      mFragment = new MyFragment(); 
      ft.add(android.R.id.content, mFragment, mTag); 
     } else { 
      ft.attach(mFragment); 
     } 
    } 

    @Override 
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) { 
     Fragment mFragment = MyActivity.this.getSupportFragmentManager().findFragmentByTag(mTag); 
     if (mFragment != null) { 
      ft.detach(mFragment); 
     } 
    } 

    @Override 
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) { 
     // Do nothing 
    } 
} 

我發現的唯一的事情是,在每一個方向變化,onTabUnselected()將不會被調用,但仍onTabSelected()被稱爲(因此當前標籤將兩次之間沒有脫離被附後)。如果這是問題,我不知道如何解決它。如果這不是問題,我不知道該去哪裏看。如果有人有建議,我會很高興。

旁註:我使用ActionBarSherlock的Action Bar。問題出現在我用(2.3,4.0,4.1)測試的所有Android版本上。

回答

1

我不知道,但這裏有一些步驟,你可以遵循

  • 您的活動onCreate()方法之前,採取捆綁參考。

    Bundle b1;

  • 在你onCreate()方法,把捆綁值B1

    @Override 
    public void onCreate(Bundle savedInstanceState) {b1=savedInstanceState; 
    

    ....................... ..... }

  • 使用此B1在onTabSelected方法

    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { 
        Fragment mFragment = MyActivity.this.getSupportFragmentManager().findFragmentByTag(mTag); 
    
    
    if (b1!=null){ 
    ft.detach(mFragment); 
    

//其餘代碼

................} 
     } 

它的一個結論,我與我的工作片段得出的結論,但我還沒有TabListener做到了。所以,告訴我什麼時候完成,或者其他解決方案。

+1

謝謝您的意見,非常有幫助。在測試過程中,我發現如果在方向更改之後選擇了與方向更改之前相同的選項卡/片段,則問題不會發生。所以我可以通過簡單地確保選定的選項卡/片段在方向更改期間不會更改來解決我的問題。 – aha

+0

@aha歡迎您..... :) – MGDroid