“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.