2016-02-09 23 views
2

我在一個活動中有一個tablayout,navigationdrawer和工具欄。在每個片段中如何從片段更新工具欄選項

toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    viewPager = (ViewPager) findViewById(R.id.viewpager); 
    setupViewPager(viewPager); 

    tabLayout = (TabLayout) findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(viewPager); 

現在我要顯示的工具欄不同的選項: 新增3碎片viewpager並添加viewpager到tablayout:我的活動 代碼片段 所以我試圖訪問工具欄在我的片段像這樣:

public View onCreateView(LayoutInflater inflater, 
     @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     _context = getActivity(); 
    mainView = inflater.inflate(R.layout.frag1, container, false); 

    mToolbar =(Toolbar) mainView.findViewById(R.id.app_bar); 
    mToolbar.setTitle(""); 
    toolbarTitle = (TextView) getActivity().findViewById(R.id.toolbar_title); 
    toolbarTitle.setText("Fragment1"); 
    toolbarTitle.setSelected(true); 
    AppCompatActivity activity = (AppCompatActivity) getActivity(); 
    activity.setSupportActionBar(mToolbar); 
} 

充氣在onCreateOptionsMenu需要的菜單(菜單菜單,MenuInflater吹氣) 但不能誇大所需工具欄菜單。我們如何改變Fragment中的工具欄選項。

+2

你在片段中調用'setHasOptionsMenu(true)'嗎? –

+0

是的,我把它添加到片段的oncreate上,但沒用。 – user448250

+0

http://stackoverflow.com/a/26989510/2826147 –

回答

1

這是爲我工作。這就是我在onCreate所擁有的一切。 (可刷新是我自己的界面)。

public class SummaryFragment extends Fragment implements Refreshable { 

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

這就是我膨脹菜單的地方。

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.save, menu); 
    super.onCreateOptionsMenu(menu, inflater); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.save: 
     { 
      File csvFile = saveResults(); 
etc... 

它現在走了,但我即使在我的MainActivity有不同的菜單,並且兩個都出席,當我的摘要標籤是活躍的。