1 android menu android-fragments
我的要求很简单,我想在片段中打开菜单项列表。因此,我在菜单内创建了菜单 XML,并尝试在 Fragment 的onCreateOptionsMenu 方法内进行膨胀,但不幸的是没有显示任何内容。
这是:
myFragment.java
public static MoreFragment newInstance() {
return new MoreFragment();
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
menu.clear();
inflater.inflate(R.menu.more_drawer, menu);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
setHasOptionsMenu(true);
View v = inflater.inflate(R.layout.fragment_more, container, false);
setUp(v);
return v;
}
Run Code Online (Sandbox Code Playgroud)
这是 more_drawer.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/nav_busTracking"
android:icon="@drawable/ic_more_drawer_bus_tracking"
android:title="Bus Tracking" />
<item
android:id="@+id/nav_kidsWallet"
android:icon="@drawable/ic_more_drawer_kids_wallet"
android:title="Kids' Wallet" />
<item
android:id="@+id/nav_circlals"
android:icon="@drawable/ic_more_drawer_circulars"
android:title="Circulars" />
<item
android:id="@+id/nav_message"
android:icon="@drawable/ic_more_drawer_messages"
android:title="Messages" />
<item
android:id="@+id/nav_accountSettingd"
android:icon="@drawable/ic_more_drawer_account_settings"
android:title="@string/account_settings" />
<item
android:id="@+id/nav_logout"
android:icon="@drawable/ic_more_drawer_logout"
android:title="Log Out" />
</menu>
Run Code Online (Sandbox Code Playgroud)
片段.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我尝试将setHasOptionsMenu(true) 放入 onCreate() 和 onCreateView() 中,但没有显示任何内容。
我尝试调试并发现onCreateOptionsMenu()没有被调用。我尝试了为这个问题提供的所有解决方案,但没有任何结果对我有利。
我究竟做错了什么?
改变这个:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
menu.clear();
inflater.inflate(R.menu.more_drawer, menu);
}
Run Code Online (Sandbox Code Playgroud)
到:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.more_drawer, menu);
super.onCreateOptionsMenu(menu, inflater);
}
Run Code Online (Sandbox Code Playgroud)
并使用:setHasOptionsMenu(true);在视图膨胀创建之后:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
setHasOptionsMenu(true);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6474 次 |
| 最近记录: |