私はフラグメントと単一の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とonCreateContextMenuを比較してください。 –