我有一個活動,顯示一些片段。 活動視圖僅包含使用自定義FragmentPagerAdapter初始化的ViewPager。 此適配器提供3個片段之間的導航。Android:如何在片段更改時重新創建動作欄
除了Action bar之外,它似乎都能正常工作。
我重寫onCreateOptionsMenu()方法在我的片段爲任何片段創建單獨的操作欄:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
super.onCreateOptionsMenu(menu, inflater);
menu.clear();
//fragment specific menu creation
}
當我刷卡,會出現新的片段,但操作欄保持不變,幾秒鐘。可能在幾秒鐘後調用此方法並更改操作欄。
當刷卡完成後,當操作欄在一段時間內更改時,這看起來很糟糕。 如何在刷卡開始之前立即重新創建操作欄?
問題是我不能找到任何明顯的方式來要求android重新創建操作欄。 –
@Mik我已經更新了我的答案以幫助,但我並不完全瞭解你... invalidateOptionsMenu()應該「請求android重新創建操作欄」 – roarster
謝謝你的回答,但是 1.當你調用.invalidateOptionsMenu();系統並不真正重新創建操作欄。它只會導致在片段中調用onCreateOptionsMenu(),從而允許您更改Menu(這是操作欄的一部分)。如果你在片段中調用了setHasOptionsMenu(true),那麼你甚至不必調用invalidateOptionsMenu(),因爲onCreateOptionsMenu()會自動調用。 2.我無法找到在刷卡之前調用onCreateOptionsMenu()的方法。 –