我有一个片段与一个单一的Button
。我的目标是每当用户点击该按钮时显示menu_language.xml
。我试图找到一个在线答案,这是最接近我可以得到它...但它不工作:如果我按下按钮没有任何反应。这段代码有什么问题?点击后显示菜单按钮:为什么我的代码不工作?
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View fgm = inflater.inflate(R.layout.fragment_settings, container, false);
Button changeLanguageBtn = (Button) fgm.findViewById(R.id.change_language_button);
changeLanguageBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getActivity().openOptionsMenu();
}
});
return fgm;
}
@Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, view, menuInfo);
if (view.getId() == R.id.change_language_button) { // is this even necessary?
MenuInflater inflater = getActivity().getMenuInflater();
inflater.inflate(R.menu.menu_language, menu);
}
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_english:
// switch to English
return true;
case R.id.action_italian:
// switch to Italian
return true;
case R.id.action_french:
// switch to French
return true;
default:
return super.onContextItemSelected(item);
}
}
这是菜单的XML:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/action_italian"
android:title="@string/italian" />
<item
android:id="@+id/action_english"
android:title="@string/english" />
<item
android:id="@+id/action_french"
android:title="@string/french" />
</group>
</menu>
你在使用工具栏吗? –
有一个工具栏,但'change_language_button'是**不存在**:它位于屏幕中间。 – Robb1
我想你实现了错误的方法,onCreateOptionsMenu vs onCreateContextMenu –