2012-05-14 26 views
5

我在我的應用程序中使用了Sherlock動作條。我在菜單中使用了「ifRoom | withText」功能。如果我以縱向模式測試我的代碼,我只能看到圖標,如果我將方向旋轉爲橫向,我仍然只看到圖標。另一方面,如果我使用風景運行,則可以在縱向和橫向上看到文本和圖標。這意味着當屏幕旋轉時,操作欄不會刷新。我該如何解決?當方向改變時,動作條scherlock不刷新

在菜單中,我有

android:showAsAction="ifRoom|withText" 

而且我用這條線在我的清單文件以固定

android:configChanges="keyboardHidden|orientation|screenSize" 

,但沒有奏效。我跑我的代碼的Android 2.3

而且我在活動中使用的片段,

 FragmentManager fm = getSupportFragmentManager(); 
    ft = fm.beginTransaction(); 

    mFragment1 = fm.findFragmentByTag("f1"); 

    if (mFragment1 == null) { 

     mFragment1 = new MenuFragment(); 
     ft.add(mFragment1, "f1"); 

    } 

    ft.commit(); 

回答

6

處理配置的動作條菜單ActionBarSherlock不支持更改。

在ICS之前,ActionBarSherlock不是像本機操作欄那樣的裝飾視圖的一部分,因此受到與您的內容視圖相同的限制。通過處理配置更改,您不允許磁帶庫適應更改,因此會看到不正確的顯示或某些部分。

Android文檔不鼓勵處理配置更改。不惜一切代價避免它們,特別是在使用ActionBarSherlock時。

在相關說明中,我仍在嘗試解決此問題以適應將來版本的庫,但現在建議避免使用這種方法。

+0

我有一些代碼已經坐在我的onDestroy方法中,但我剛剛添加了ABS,它在旋轉時調用onDestroy。你認爲我最好的選擇是將代碼移動到後退按鈕的處理程序中嗎?謝謝 – Matt

+0

只要你記得調用超類的方法,你可以重寫'onDestroy'。 –

+0

我忘了提及我之前並未銷燬旋轉活動。所以我將代碼移到了onBackPressed方法上。 – Matt

0

我認爲你將不得不重新創建配置變化

invalidateOptionsMenu(); 
+0

謝謝你的回答,我在配置更改中嘗試了你的函數,但它沒有工作。你有其他想法嗎? – SavasCinar

+0

我唯一的其他建議是嘗試supportInvalidateOptionsMenu(); – Tony

+0

謝謝託尼,但它仍然沒有任何效果。我不知道,問題出在哪裏 – SavasCinar

相關問題