2014-08-28 74 views
0

我有一個導航抽屜與2片段,片段A和片段B.片段B是一個片段與視圖尋呼機和片段選項卡1和片段選項卡2.我試圖在片段tab1和片段選項卡2中顯示搜索視圖。我嘗試在片段選項卡1中調用setHasOptionsMenu(true),但onCreateOptions()未調用,因此searchview從不顯示。任何人都可以請幫助如何讓這個工作?我按照這個教程:View Pager+fragments+navdrawer菜單項不顯示在導航抽屜視圖尋呼機片段

片段2(保持視圖尋呼機)

public class TabsFragment extends SherlockFragment { 

private PagerTitleStrip titleStrip; 
private Menu menu; 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.tabs_swipe, container, false); 
    // Locate the ViewPager in viewpager_main.xml 
    ViewPager mViewPager = (ViewPager) view.findViewById(R.id.pager); 
    // Set the ViewPagerAdapter into ViewPager 
    mViewPager.setAdapter(new TabsPagerAdapter(getChildFragmentManager(), 
      getSherlockActivity())); 
    titleStrip = (PagerTitleStrip) view.findViewById(R.id.titlestrip); 
    titleStrip.setTextColor(Color.WHITE); 
    titleStrip.setBackgroundColor(Color.parseColor("#E6000000")); 
    mViewPager.setCurrentItem(2); 

    return view; 
} 

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    setHasOptionsMenu(true); 
} 

@Override 
public void onDetach() { 
    Log.d("tabs frag","on detach"); 
    super.onDetach(); 
    try { 
     Field childFragmentManager = Fragment.class 
       .getDeclaredField("mChildFragmentManager"); 
     childFragmentManager.setAccessible(true); 
     childFragmentManager.set(this, null); 
    } catch (NoSuchFieldException e) { 
     throw new RuntimeException(e); 
    } catch (IllegalAccessException e) { 
     throw new RuntimeException(e); 
    } 
} 

片段標籤1:

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    setHasOptionsMenu(true); 
} 


@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    Log.d(TAG, "on create options"); // never called 
    menu.clear(); 
    inflater.inflate(R.menu.main, menu); 

    searchItem = menu.findItem(R.id.action_search); 
    searchItem.setVisible(true); 
    mSearchView = (SearchView) searchItem.getActionView(); 
} 

UDPATE

嘗試下面的代碼。搜索查看的片段選項卡1次出現,但現在的適配器TAB1顯示空當執行onQueryTextchanged

if(adapter.getItem(mViewPager.getCurrentItem()) instanceof FragTab1) 
    { 
     FragTab1 fragment = (FragTab1) adapter.getItem(mViewPager.getCurrentItem()); 

     fragment.onCreateOptionsMenu(menu, inflater); 
    } 

@Override 
public boolean onQueryTextChange(String newText) { 

    searchAdapter.getFilter().filter(newText); // shows searchadapter is null eventhough I have filled it in onCreate. 
    searched = true; 
    return true; 
} 
+0

任何可能的幫助將不勝感激。在這一整天掙扎:( – RisingUp 2014-08-29 08:15:16

回答

0

使用操作欄COMPAT而不是動作條夏洛克解決了這個問題。猜猜Sherlock圖書館有關兒童片段的問題,或者可能是我遺漏了一些東西。但Action Bar Compat工作得很好,沒有改變任何東西。