Kev*_*vin 166 android android-fragments layout-inflater oncreateoptionsmenu
我放在setHasOptionsMenu(true)里面onCreateView,但我仍然无法调用onCreateOptionsMenu内部碎片.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
setHasOptionsMenu(true);
return inflater.inflate(R.layout.facesheet, container, false);
}
Run Code Online (Sandbox Code Playgroud)
以下是我的onCreateOptionsMenu代码.
@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
getSupportMenuInflater().inflate(R.menu.layout, menu);
return (super.onCreateOptionsMenu(menu));
}
Run Code Online (Sandbox Code Playgroud)
我收到的错误消息:
该方法
onCreateOptionsMenu(Menu)类型片段的必须重写或实现的超类型方法.
Sin*_*Raj 458
试试这个,
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_sample, menu);
super.onCreateOptionsMenu(menu,inflater);
}
Run Code Online (Sandbox Code Playgroud)
并onCreate添加此行以使选项显示在您的Toolbar
setHasOptionsMenu(true);
Run Code Online (Sandbox Code Playgroud)
Ale*_*ber 21
您已经拥有自动生成的文件res/menu/menu.xml,用于定义action_settings.
在您的MainActivity.java中有以下方法:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.action_settings:
// do stuff, like showing settings fragment
return true;
}
return super.onOptionsItemSelected(item); // important line
}
Run Code Online (Sandbox Code Playgroud)
在onCreateView()Fragment调用的方法中:
setHasOptionsMenu(true);
Run Code Online (Sandbox Code Playgroud)
并添加以下两种方法:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.fragment_menu, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.action_1:
// do stuff
return true;
case R.id.action_2:
// do more stuff
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
最后,添加定义action_1和action_2的新文件res/menu/fragment_menu.xml.
这样,当您的应用显示片段时,其菜单将包含3个条目:
Fil*_*ito 10
我尝试了@Alexander Farber和@Sino Raj的答案.这两个答案都很好,但我无法在我的片段中使用onCreateOptionsMenu,直到我发现缺少的内容:
在我的Activity中添加setSupportActionBar(工具栏),如下所示:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.id.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
Run Code Online (Sandbox Code Playgroud)
我希望这个答案可以帮助有同样问题的人.
称呼
setSupportActionBar(toolbar)
Run Code Online (Sandbox Code Playgroud)
里面
onViewCreated(...)
Run Code Online (Sandbox Code Playgroud)
片段数
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
((MainActivity)getActivity()).setSupportActionBar(toolbar);
setHasOptionsMenu(true);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
106816 次 |
| 最近记录: |