7

我有菜單片段:如何更改不同片段中的選項菜單?

public class FragmentA extends Fragment { 

public FragmentA() { 
    setHasOptionsMenu(true); 
} 

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

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

}

我想改變菜單,但它不工作,並保留舊的操作菜單

片段B高於等於像不同的膨脹xml菜單。

public class FragmentB extends Fragment { 

public FragmentB() { 
    setHasOptionsMenu(true); 
} 

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

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

}

EDITED:

可以爲使用不同的片段不同的菜單佈局和用於主活性和型動物ID 1個菜單佈局有用

+2

認沽'setHasOptionsMenu(真)'的構造函數。 –

+0

我有setHasOptionsMenu(true);在onCreate片段中。構想中的意思是什麼?我沒有一個 –

+0

檢查答案。 –

回答

21

setHasOptionsMenu(true)在構造和膨脹片段特定的菜單。

public class FragmentA extends Fragment { 

    public FragmentA() { 
     setHasOptionsMenu(true); 
    } 

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

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

菜單中的主要活動

public class MainActivity extends Activity { 
    @Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     inflater.inflate(R.menu.main_menu, menu); 
     super.onCreateOptionsMenu(menu, inflater); 
    } 
} 
+0

我編輯了我的問題。它不起作用... –

+0

膨脹你想要的菜單,主菜單需要在主要活動中膨脹,並且特定於碎片的菜單需要被分段膨脹。 –

+0

我使用過那樣的菜單,不需要使用清晰。 –

相關問題