Kelas aplikasi global kustom terputus dengan "android.app.Application tidak dapat digunakan untuk"

141

Saya memiliki kelas global khusus yang terlihat seperti ini

import android.app.Application;

public class MyApp extends Application {

    public String MainAct;

    public String getMainAct() {
        return MainAct;
    }

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

Saya ingin mempertahankan string di kelas ini melalui yang lain Activitydalam onCreatemetodenya.

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

Itu rusak pada baris yang ditandai dengan kesalahan: Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to com.xxx.yyy.global.MyApp

Saya telah memeriksa kode untuk lima kali dan saya tidak dapat menemukan kesalahan di mana pun. Adakah yang bisa memberitahu saya di mana kesalahannya?

Terima kasih

cendana
sumber

Jawaban:

470

Kesalahan menyatakan bahwa jenis objek yang dikembalikan oleh getApplicationadalah android.app.Application. Kemungkinan penyebabnya adalah Anda gagal mendefinisikan aplikasi dalam manifes. Pastikan manifes Anda menyertakan sesuatu di baris:

<application android:name=".MyApp"...
</application>
K-ballo
sumber
8
Ya Tuhan, kau benar. Dan saya telah kehilangan jam terakhir mencoba mencari tahu mengapa itu tidak ingin bekerja saat ini ketika bekerja 100 kali sebelumnya :). Terima kasih banyak!
sandalone
8
2 tahun kemudian, masih menyelamatkan hidup
Vrashabh Irde
30
Hei. Saya menambahkan ini ke manifes saya. Namun, itu masih memberi saya ClassCastException
Somu
13
Memiliki masalah yang sama beberapa menit yang lalu di Android N, manifes itu benar. Mulai ulang perangkat - pengecualian telah hilang. Aneh ...
artkoenig
3
@Somu membersihkan cache, dan menutup menjalankan instan, membangun kembali proyek, ini kata untuk saya, saya pikir ini adalah bug dari menjalankan instan.
LenaYan
11

Solusi lain untuk perangkat atau emulator Android yang lebih lama . Anda mendefinisikan aplikasi dalam manifes:

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

tetapi Anda masih memiliki masalah ini?

Coba nonaktifkan jalankan instan:

  1. Nonaktifkan menjalankan Instan
  2. Bersihkan dan bangun kembali proyek
  3. Hapus aplikasi dari perangkat dan instal lagi tanpa menjalankan Instan
Val
sumber