SORU
14 EKİM 2011, Cuma


Nasıl onPrepareOptionsMenu menü girişler açıldığında bu ActionBar yenileyebilir miyim?

Uygulamalarım içinde sık sık/devre dışı bırak menü girdilerini etkinleştirmek ve onları görünür onPrepareOptionsMenu olun.

Bugün android eklemeye başladım:showAsAction menü benim Android 2 bazı öznitelik.x menü girdilerini en ActionBar üzerinde kullanıldığını göstermek için uygulamalar.

Bu ActionBar devre dışı bırak ve görünürlüğü etkinleştir/hemen yansıtmıyor. Bu değişimi görmek için sağdaki menü açılır tıklayın ihtiyacım var.

Tamam, menü onPrepareOptionsMenu çalıştığını anlıyorum. Ama benim için ActionBar yenilemek için ne yapmam gerekiyor? Bu değişiklik onOptionsİtemSelected içinde uygulanması gerektiğini düşünüyorum ama aramam gerektiğini bilmiyorum.

İşte menü:

<item
    android:icon="@drawable/ic_menu_mapmode"
    android:id="@ id/men_mapview"
    android:showAsAction="ifRoom|withText"
    android:title="@string/txt_mapview" />

<item
    android:icon="@drawable/ic_menu_mapmode"
    android:id="@ id/men_satelliteview"
    android:showAsAction="ifRoom|withText"
    android:title="@string/txt_satelliteview" />

İşte onPrepareOptionsMenu:

@Override
public boolean onPrepareOptionsMenu(final Menu menu) {
    MenuItem menuItemMapView = menu.findItem(R.id.men_mapview);
    MenuItem menuItemSatelliteView = menu.findItem(R.id.men_satelliteview);

    if (mapView.isSatellite()) {
        menuItemMapView.setEnabled(true).setVisible(true);
        menuItemmenuItemSatelliteView.setEnabled(false).setVisible(false);
    } else {
        menuItemMapView.setEnabled(false).setVisible(false);
        menuItemmenuItemSatelliteView.setEnabled(true).setVisible(true);
    }

    return super.onPrepareOptionsMenu(menu);
}

İşte onOptionsİtemSelected

@Override
public boolean onOptionsItemSelected(final MenuItem menuItem) {
    switch (menuItem.getItemId()) {
        case R.id.men_mapview:
            mapView.setSatellite(false);
            mapView.setStreetView(true);
            mapView.invalidate();

            invalidateOptionsMenu(); // This works on Android 3.x devices only
            return true;
        case R.id.men_satelliteview:
            mapView.setSatellite(true);
            mapView.setStreetView(false);
            mapView.invalidate();

            invalidateOptionsMenu(); // This works on Android 3.x devices only
            return true;
    }

    return super.onOptionsItemSelected(menuItem);
}

DÜZENLEME:Eğer invalidateOptionsMenu eklersem bu Android 3 üzerinde çalışıyor.x ama Android 2 uygulamalar çöküyor.x eksik bir yöntem çünkü cihazlar. Bunu doğru yapmak için önerilen yolu nedir?

CEVAP
29 EKİM 2013, Salı


Kabul cevap için teşekkürler. ActionBarActivity kullanıyorum. bu sınıf içinde kullanabilirsiniz

supportInvalidateOptionsMenu();

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CrazyMan

    CrazyMan

    14 Mayıs 2008
  • MikeyMacintosh

    MikeyM

    28 Aralık 2009
  • Ordetta Price

    Ordetta Pric

    12 EYLÜL 2011