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

我使用过那样的菜单,不需要使用清晰。 –

相关问题