![](/img/trans.png)
[英]Class cannot be cast to the same class - after restart in Glassfish server application
[英]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
誰能告訴我為什么我無法將其轉換為擴展應用程序的類?
在清單中,您應該聲明Mediator
是application
類,以便將其實例化為應用程序。
例如,
<application
android:name="dk.AnApp.app.Mediator"
...
這可以處理異常,但不能保證您的Mediator
類存在充分的理由(如CommonsWare在注釋中指出的那樣)。
this.mediator = (Mediator) getApplication();
我認為這是您的問題。 getApplication()
返回的Application
是Mediator
的超類,因此您不能像這樣丟棄繼承樹。
<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.