“Android.app.Application öğesi kullanılamaz” ile özel global Uygulama sınıfı sonları


141

Buna benzeyen özel bir global sınıfım var

import android.app.Application;

public class MyApp extends Application {

    public String MainAct;

    public String getMainAct() {
        return MainAct;
    }

    public void setMainAct(String mainAct) {
        MainAct = mainAct;
    }
}

Başka yolu ile bu sınıfta bir dize korumak istiyorsanız Activityonun içinde onCreateyöntemle.

    String local = "myLocalVariable";
    ((MyApp) getApplication()).setMainAct(local); //breaks here!!!
    String name = ((MyApp) getApplication()).getMainAct();

İşaretli çizgiyi hatalı olarak keser: Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to com.xxx.yyy.global.MyApp

Kodu beş kez kontrol ettim ve hiçbir yerde hata bulamıyorum. Biri bana hatanın nerede olduğunu söyleyebilir mi ?!

Teşekkürler

Yanıtlar:


470

Hata tarafından döndürülen nesne tipi belirtiyor getApplicationolduğunu android.app.Application. Bunun olası bir nedeni, uygulamayı bildirimde tanımlayamamanızdır. Manifestinizin şu satırlarda bir şey içerdiğinden emin olun:

<application android:name=".MyApp"...
</application>

8
Aman Tanrım, haklısın. Ve daha önce 100 kez çalıştığında neden bu sefer çalışmak istemediğini anlamaya çalışırken son saatimi kaybettim :). Çok teşekkürler!
sandalone

8
2 yıl sonra, hala hayat kurtarıyor
Vrashabh Irde

30
Hey. Bunu manifestoma ekledim. Ancak, hala bana bir ClassCastException veriyor
Somu

13
Aynı sorun birkaç dakika önce Android N'de de vardı, manifest doğruydu. Cihaz yeniden başlatıldı - istisna gitti. Garip ...
artkoenig

3
@Somu temiz önbellek ve yakın anında çalıştırmak, proje yeniden oluşturmak, bu benim için ifade, ben bu anında çalışma bir hata olduğunu düşünüyorum.
LenaYan

11

Eski Android cihazlar veya emülatörler için başka bir çözüm . Manifest'te bir uygulama tanımladınız:

    <application 
           android:name=".MyApp"...
    </application>

ama hala bu sorunun mu var?

Anında çalıştırmayı devre dışı bırakmayı deneyin:

  1. Anında çalıştırmayı devre dışı bırakma
  2. Projeyi temizleme ve yeniden oluşturma
  3. Uygulamayı cihazdan kaldırın ve Anında çalıştırma olmadan tekrar yükleyin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.