我有以下课程:

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


Reference

这样可以处理异常,但不能保证您的Mediator类存在充分的理由(如CommonsWare在注释中指出的那样)。

10-08 00:06