1

準備コードは次のとおりです。

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
                                ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);

    MenuInflater inflater = getActivity().getMenuInflater();
    inflater.inflate(R.menu.language_menu, menu);

    MenuItem menuItem = menu.findItem(R.id.arabic);
    if (UtilityPreferenceManager.getSelectedLanguage() == UtilityPreferenceManager.LanguageArabic) {
        menuItem.setChecked(true);
    } else {
        menuItem.setChecked(false);
    }

    menuItem = menu.findItem(R.id.english);

    if (UtilityPreferenceManager.getSelectedLanguage() == UtilityPreferenceManager.LanguageEnglish) {
        menuItem.setChecked(true);
    } else {
        menuItem.setChecked(false);
    }
}

@Override
public boolean onContextItemSelected(MenuItem item) {
    item.setChecked(true);
     switch (item.getItemId()) {
        case R.id.arabic:
            if (UtilityPreferenceManager.getSelectedLanguage() != UtilityPreferenceManager.LanguageArabic) UtilityPreferenceManager.changeLanguage(); 
            return true;

        case R.id.english:
            if (UtilityPreferenceManager.getSelectedLanguage() != UtilityPreferenceManager.LanguageEnglish) UtilityPreferenceManager.changeLanguage(); 
            return true;

        default:
            return super.onContextItemSelected(item);
    }
}

メニューxmlは次のとおりです。

<group android:checkableBehavior="single">
    <item android:id="@+id/arabic"
          android:title="@string/arabic" />

    <item android:id="@+id/english"
          android:title="@string/english" />

</group>

問題は、メニューが常に英語が選択された状態で表示されることです。言語設定が設定に正しく保存されていると確信しています。実際、if条件は正常に機能していますが、終了後に選択したメニュー項目を上書きする何かがあるようですonCreateContextMenu

4

0 に答える 0