"Android.app.Application के साथ डाली नहीं जा सकती"


141

मेरे पास एक कस्टम ग्लोबल क्लास है जो इस तरह दिखता है

import android.app.Application;

public class MyApp extends Application {

    public String MainAct;

    public String getMainAct() {
        return MainAct;
    }

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

मैं Activityअपनी onCreateविधि में इस श्रेणी में एक स्ट्रिंग को दूसरे के माध्यम से संरक्षित करना चाहता हूं ।

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

यह त्रुटि के साथ चिह्नित लाइन पर टूट जाता है: Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to com.xxx.yyy.global.MyApp

मैंने पाँच बार कोड की जाँच की है और मुझे कहीं भी त्रुटि नहीं मिली है। किसी ने मुझे बता सकते हैं कि त्रुटि कहाँ है ?!

धन्यवाद

जवाबों:


470

त्रुटि बताती है कि ऑब्जेक्ट का प्रकार किसके द्वारा लौटाया गया getApplicationहै android.app.Application। इसका एक संभावित कारण यह है कि आप प्रकट में आवेदन को परिभाषित करने में विफल रहे। सुनिश्चित करें कि आपके प्रकटन में कुछ शामिल हैं:

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

8
हे भगवान, तुम सही हो। और मैं पिछले घंटे यह जानने की कोशिश कर रहा हूं कि यह इस समय क्यों काम नहीं करना चाहता है जब यह 100 बार काम किया है :)। आपका बहुत बहुत धन्यवाद!
सैंडलोन

8
2 साल, अभी भी जान बचा रहे हैं
व्रषभ इरडे

30
अरे। मैंने इसे अपने प्रकटीकरण में शामिल कर लिया है। हालाँकि, यह अभी भी मुझे एक ClassCastException
Somu

13
एंड्रॉइड एन पर मिनटों पहले एक ही समस्या थी, प्रकट सही था। डिवाइस को पुनरारंभ किया - अपवाद चला गया था। अजीब ...
आर्टकोएनिग

3
@Somu क्लीन कैश, और क्लोज़ इंस्टेंट रन, प्रोजेक्ट का पुनर्निर्माण, मेरे लिए यह शब्द, मुझे लगता है कि यह इंस्टेंट रन का एक बग है।
लीनयैन

11

पुराने एंड्रॉइड डिवाइस या एमुलेटर के लिए एक और समाधान । आपने प्रकट में एक आवेदन को परिभाषित किया:

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

लेकिन आपको अभी भी यह समस्या है?

तत्काल चलाने को अक्षम करने का प्रयास करें:

  1. एक त्वरित रन अक्षम करें
  2. प्रोजेक्ट को साफ और पुनर्निर्माण करें
  3. ऐप को डिवाइस से निकालें और इंस्टेंट रन के बिना इसे फिर से इंस्टॉल करें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.