0
我有一個onOptionItemSelected()
檢查問題。我在onOptionItemSelected()
建立了一個菜單,有2個菜單組,第一組只有1個子菜單,第二組有3個子菜單。我想要改變子菜單上點擊它時的檢查。但我嘗試了很多次,但是我做不到。在Android的選項菜單中檢查車削
如果我點擊了一個子菜單,它的檢查結果會改變,但其他檢查結果不會改變。誰能幫我 ?
我將所有檢查事項保存到共享首選項。
任何人都知道任何關於訪問onOptionItemSelected()
中的其他項目檢查對象?
謝謝你,對不起我的英語。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
String ringerString = mSharedPrefs.getString("ringer", SOR_STRING);
boolean ringer = false;
if (ringerString == SOR_STRING) {
ringer = true;
}
String ayarString = mSharedPrefs.getString("ayar", "ikisi");
boolean ayarIkisi = false, ayarMesaj = false, ayarArama = false;
if (ayarString == "ikisi") {
ayarIkisi = true;
} else if (ayarString == "mesaj") {
ayarMesaj = true;
} else if (ayarString == "arama") {
ayarArama = true;
}
SubMenu mMenu = menu.addSubMenu("Settings").setIcon(
android.R.drawable.ic_secure);
mMenu.add(1, 11, 0, SOR_STRING).setCheckable(true).setChecked(ringer);
menu2 = menu.addSubMenu("Mesaj ve Arama Seçenekleri").setIcon(
android.R.drawable.sym_action_chat);
menu2.add(2, 12, 0, "Mesajlarda cevapla").setCheckable(true)
.setChecked(ayarMesaj);
menu2.add(2, 13, 0, "Aramalarda cevapla").setCheckable(true)
.setChecked(ayarArama);
menu2.add(2, 14, 0, "Her ikisinde de cevapla").setCheckable(true)
.setChecked(ayarIkisi);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
RunningServices runningServices = new RunningServices();
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
String ringerString = mSharedPrefs.getString("ringer", SOR_STRING);
boolean ringer = false;
if (ringerString == SOR_STRING) {
ringer = true;
}
switch (item.getItemId()) {
case 11:
if (ringer) {
Log.v("menu sor", "giriş");
if (!runningServices.isRingerRunnig(manager)) {
try {
startService(new Intent(MainActivity.this,
RingerService.class));
} catch (Exception e) {
// TODO: handle exception
Log.v("start service", "ringer service start hatası");
}
doShared("ringer", SORMA_STRING);
item.setChecked(true);
// setMenuTitle(mSharedPrefs.getString("ringer",
// SOR_STRING),
// item);
Log.v("menu", item.getTitle().toString());
progresislemi();
return true;
}
} else {
Log.v("menu sorma", "giriş");
// if (runningServices.isRingerRunnig(manager)) {
try {
stopService(new Intent(MainActivity.this,
RingerService.class));
} catch (Exception e) {
// TODO: handle exception
Log.v("stop service", "ringer service stop hatası");
}
doShared("ringer", SOR_STRING);
item.setChecked(false);
// setMenuTitle(mSharedPrefs.getString("ringer", SOR_STRING),
// item);
Log.v("menu", item.getTitle().toString());
progresislemi();
return true;
// }
}
return true;
case 12:
doShared("ayar", "mesaj");
Toast.makeText(getApplicationContext(),
mSharedPrefs.getString("ayar", "mesaj"), Toast.LENGTH_LONG)
.show();
menuIslemi();
item.setChecked(true);
return true;
case 13:
doShared("ayar", "arama");
Toast.makeText(getApplicationContext(),
mSharedPrefs.getString("ayar", "mesaj"), Toast.LENGTH_LONG)
.show();
menuIslemi();
item.setChecked(true);
return true;
case 14:
doShared("ayar", "ikisi");
Toast.makeText(getApplicationContext(),
mSharedPrefs.getString("ayar", "mesaj"), Toast.LENGTH_LONG)
.show();
menuIslemi();
item.setChecked(true);
return true;
default:
return super.onOptionsItemSelected(item);
}
}