簡體   English   中英

無法將申請轉換為課程

[英]Cannot cast Application to Class

我有以下課程:

    public class Mediator extends Application
{
    private HTTPSender sender;

    public Mediator()
    {
        sender = new HTTPSender();
    }

    public void sendMessage()
    {

    }
}

現在在我的活動中,請執行以下操作:

public class Contact extends ActionBarActivity {
    private Mediator mediator;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        this.mediator = (Mediator) getApplication();
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_contact);

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }
    }
}

當我運行我的應用程序時,我得到以下信息:

  Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to dk.AnApp.app.Mediator

誰能告訴我為什么我無法將其轉換為擴展應用程序的類?

在清單中,您應該聲明Mediatorapplication類,以便將其實例化為應用程序。

例如,

<application
    android:name="dk.AnApp.app.Mediator"
    ...

參考

這可以處理異常,但不能保證您的Mediator類存在充分的理由(如CommonsWare在注釋中指出的那樣)。

this.mediator = (Mediator) getApplication();

我認為這是您的問題。 getApplication()返回的ApplicationMediator的超類,因此您不能像這樣丟棄繼承樹。

<application 
    android:label="@string/app_name" 
    android:icon="@drawable/ic_launcher" 
    android:name="ThisApplicationClass" // Here
    >

在清單文件(如上所述)中的application元素中添加android:name屬性可以獲取Android API來為您返回正確的類類型。

我已經執行了:

this.mediator = (Mediator)getApplication()

而且有效! 我確實可以執行清單,也可以在其他課程中擴展Application。 但是我仍然有這個演員表問題。 幸運的是,我可以解決它! :D謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM