Android logosunun işlem çubuğuna ulaşması sorunu

Tek istediğim, faaliyetin adının yanında bulunan manifest (ic_launcher.png) 'de belirttiğim logo. Başlatıcı için bir simge olarak değil, menüde görünür. Bildiride bu tek resme logo ve simge özelliğini işaret ettim. Ekranın üstünde bir menü doldurmak için bir OnCreateOptionMenu içinde getMenuInflater() kullanıyorum. Bu iyi çalışıyor. Kullanıcının uygulamanın farklı aktivitelerini tıklayıp hareket edebilmesi için ayarladım. Uygulamanın adı görünür, ancak simge bu çubukta yer almaz.

Açıklamamın logosu var:

 

Etkinleştirmek için bu kodu koyduğumda, program çöküyor. Niye ya?

    ActionBar actionBar= getActionBar();
    actionBar.setDisplayUseLogoEnabled(true);

On android's own developer site it says:

Bir simge yerine logo kullanma

     

Varsayılan olarak, sistem uygulama simgenizi eylem çubuğunda kullanır.   veya simge özniteliğinde belirtildiği şekilde   öğesi. Ancak, eğer logo özelliğini de belirtirseniz, o zaman   eylem çubuğu, simge yerine logo resmini kullanır.

Aynı sonucu doğrudan da çalıştırmayı denedim:

getActionBar().setDisplayUseLogoEnabled(true);

Kaza:

Caused by: java.lang.NullPointerException
at .MainActivity.onCreate(MainActivity.java:33)

Yukarıdaki ifadeye işaret ediyor.

Ben de denedim:

getSupportActionBar().setDisplayUseLogoEnabled(true);

Uygulama bununla çakışmadı, ancak logo yok.

Uygulama temam olarak Theme.AppCompat.Light.DarkActionBar 'ı kullanıyorum ve bunun benim simgemi aldığına inanıyorum.


I am extending ActionBarActivityand inflating the menu getMenuInflater().inflate(R.menu.menu_main, menu);

ActionBarActivitesini genişletiyorum.

3
Bunu deneyin: getSupportActionBar (). setDisplayShowHomeEnabled (false); getSupportActionBar (). setDisplayShowHomeEnabled (true);
katma yazar Vishnu Prabhu, kaynak
@Mattia Theme.AppCompat.Light.DarkActionBar kullanıyorum
katma yazar munchschair, kaynak
@SuperThomasLab Yaptım. Kilitlenme yok ama ayrıca logo yok.
katma yazar munchschair, kaynak
Appcompat-v7 kullanıyor musunuz? Hangi versiyon?
katma yazar Mattia Maestrini, kaynak
Bunun yerine getSupportActionBar() kullanmayı deneyin.
katma yazar Thomas Vos, kaynak
Aldığınız hatayı yayınlayın
katma yazar Fede Bucich, kaynak

7 cevap

Manifest dosyanızın Uygulama bölümüne android: logo = "@ drawable /...." ekleyin.

android:logo A logo for the application as whole, and the default logo for activities.

Bu öznitelik, resmi içeren çekilebilir bir kaynağa referans olarak ayarlanmalıdır (örneğin "@ çizilebilir/logo"). Varsayılan logo yok.

1
katma
Oh bekle, çekilebilir olmalı mı? Bende mipmap var.
katma yazar munchschair, kaynak
Bende zaten var.
katma yazar munchschair, kaynak

Büyük olasılıkla bu sorun, destek kitaplığının 21. + veya 22. + sürümünü kullanmanızdan kaynaklanır. Lollipop'tan başlayarak ActionBar uygulamasında uygulama logosunun kullanımı önerilmez ve destek kitaplığının en yeni sürümleri bu değişikliği yansıtır.

Uygulama logosunu ActionBar 'da kullanmaya devam etmek istiyorsanız, düzeninize Araç Çubuğu görünümü eklemeniz gerekir (bu görünümde daha fazla bilgi bulunabilir burada ) ve 'dan birini kullanın setLogo() yöntemleri: önce veya ikinci .

1
katma
Ya zaten ActionBar'ı genişletiyor ve MenuInflator kullanıyorsam?
katma yazar munchschair, kaynak
@munchschair, Araç Çubuğu'nu kullanmak istemezseniz, bir seçenek targetSdkVersion & support library sürümlerini 19'a ayarlamak olacaktır. Logonuzu tekrar göreceksiniz. Ancak uygulamanız Lollipop cihazlarda Holo stilinde görünecek. Bununla başa çıkabilirseniz, uygulamanızı KitKat cihazları için hedefleyin.
katma yazar aga, kaynak

adresine göre Android blogu , mipmap klasörü uygulama simgelerine yöneliktir, ancak uygulama logosunun da iyi olmadığını söylemektedir. Bu yüzden, çizilebilir klasörden logoyu daha iyi ayarladığınızı varsayalım:


Umarım bu yardım!

0
katma

Bunu dene...



0
katma
Bu da çöküyor. (MainColor500'ü dahil etmedim).
katma yazar munchschair, kaynak

Kodunuzda birden fazla sorun var.

ActionBarActivity ve AppCompat kullandığınızdan, ActionBarActivity'i kullandığınızda tam olarak ne anlama geldiğini anlamalısınız.

Kodunuzu göndermediniz, bu yüzden Araç Çubuğu veya ActionBar kullanıyorsanız açık değil (ActionBar kullanımdan kaldırıldı ve kullanmaya devam ediyorsanız kullanmamalısınız).

Araç Çubuğu'nu zaten kullanıyorsanız, bu gibi bir simge ayarlayabilirsiniz.

<�önceki> Araç çubuğu araç çubuğu = (Araç çubuğu) findViewById (R.id.toolbar);     eğer (araç çubuğu! = boş) {         setSupportActionBar (araç);         toolbar.setLogo (R.drawable.icon_here);     }

Araç Çubuğu'nu kullanmıyorsanız, önce bu satırları temanızda ayarlayın.


Daha sonra etkinlik düzen dosyanızda en üstte araç çubuğu ekleyin.


0
katma
Herşey çalışıyor.
katma yazar munchschair, kaynak
Bu, kullandığım her iki etkinlikte de ortaya çıkıyor, ancak ana etkinliğimde yalnızca tıklanabilir durumdadır (actionbar'da kısayol olarak dizelerim var). Diğer faaliyetimde değil.
katma yazar munchschair, kaynak
Her iki etkinlikte ne ortaya çıkıyor? Sorunu açıklamak için sorunuzu güncelleyin.
katma yazar Sharj, kaynak
getSupportActionBar().setDisplayShowHomeEnabled(false);
getSupportActionBar().setDisplayUseLogoEnabled(true);
0
katma

Bunun yerine uygulama için android: icon = "@ drawable/ic_launcher" kullanmanızı da öneririz. ( @corawable 'ı deneyin)

Eğer işe yaramazsa, getActionBar() öğesini deneyin. SetDisplayShowHomeEnabled (true); ( setContentView'dan önce çağrılmalıdır (R.layout.activity_main); )

Bu arada, her farklı Etkinlik için bir simge belirtmek isterseniz, etkinlikte android: logo = "@ çizilebilir/YOUR_ICON" ayarını da yapabilirsiniz.

Umarım çalışır

0
katma
Neden mipmap yerine çekilebilir?
katma yazar munchschair, kaynak
İlk işe yaramıyor. İkinci program çökmesini sağlar. Kazaya yukarıyı ekledim ^.
katma yazar munchschair, kaynak
katma yazar Chen, kaynak