当前位置: 首页 > 面试题库 >

无法使用getApplication方法转换为Application

谢胤
2023-03-14
问题内容

我有App包含我的上下文的课程Application。但是,当我编译时error,在这一行中出现了另一个类:

 App app = (App) getApplication();

App

import android.app.Application;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
import com.example.Radio_KPI.R;
import com.example.Radio_KPI.Utils.Const;

public class App extends Application {

    private MediaPlayer player;
    private NotificationManager manager;
    private String curSong;
    private Context Main_con;

    public Context getMain_con() {
        return Main_con;
    }

    public void setMain_con(Context main_con) {
        Main_con = main_con;
    }

    public String getCurSong() {
        return curSong;
    }

    public void setCurSong(String curSong) {
        this.curSong = curSong;
    }

    public NotificationManager getManager() {
        return manager;
    }

    public void setManager(NotificationManager manager) {
        this.manager = manager;
    }

    public MediaPlayer getPlayer() {
        return player;
    }

    public void setPlayer(MediaPlayer mPlayer) {
        this.player = mPlayer;
    }

}

错误:

java.lang.ClassCastException: android.app.Application cannot be cast to com.example.Radio_KPI.Application.AppContext
        at com.example.Radio_KPI.Activities.Main.onCreate(Main.java:62)
        at android.app.Activity.performCreate(Activity.java:4531)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1071)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2150)

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.Radio_KPI"
          android:versionCode="1"
          android:versionName="1.0">

    <uses-sdk android:minSdkVersion="8"/>
    <uses-sdk android:targetSdkVersion="14"/>

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <application android:label="@string/app_name" android:icon="@drawable/one">
        <activity android:name=".Activities.Main"
                  android:screenOrientation="portrait"
                  android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity android:name=".Activities.About"
                  android:screenOrientation="portrait"
                  android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
                  android:label="@string/app_name">
        </activity>
        <activity android:name=".Activities.SavedSongs"
                  android:screenOrientation="portrait"
                  android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
                  android:label="@string/savedSongs">
        </activity>
        <service
                android:name=".Services.MyService">
        </service>
    </application>
</manifest>

问题答案:
<application
    android:label="@string/app_name"
    android:icon="@drawable/one"
    android:name=".App" >

您需要在清单中指定以使用自定义应用程序。

这是完整的 AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.Radio_KPI"
          android:versionCode="1"
          android:versionName="1.0">

    <uses-sdk android:minSdkVersion="8"/>
    <uses-sdk android:targetSdkVersion="14"/>

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <application
    android:name=".App"
    android:label="@string/app_name"
    android:icon="@drawable/one">
        <activity android:name=".Activities.Main"
                  android:screenOrientation="portrait"
                  android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity android:name=".Activities.About"
                  android:screenOrientation="portrait"
                  android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
                  android:label="@string/app_name">
        </activity>
        <activity android:name=".Activities.SavedSongs"
                  android:screenOrientation="portrait"
                  android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
                  android:label="@string/savedSongs">
        </activity>
        <service
                android:name=".Services.MyService">
        </service>
    </application>
</manifest>


 类似资料:
  • 这是我得到错误的代码 这是我的AnalyticsApplication类 这是logcat上的错误 03-09 18:46:11.070 32602-32602/auc。games2.multigame1 E/AndroidRuntime:致命异常:主java。lang.ClassCastException:android。应用程序。无法将应用程序转换为auc。游戏2.分析。auc的分析应用。ga

  • 问题内容: 我正在使用spring通过bean创建对象。现在,我尝试使用aop创建相同的对象,并且我无法将$ Proxy强制转换为SaleRoom异常。 先前的xml是: 我使用以下代码创建销售: 这是新的xml: Aspect日志记录类: 我正在使用相同的代码通过aop创建bean。并且在线程“主”中得到异常java.lang.ClassCastException:$ Proxy11无法转换为a

  • 问题内容: 为什么写: 问题答案: 实现的对象是。 您要在其中覆盖的方法应将对象作为参数,而将其强制转换为。您的实现应描述如何与另一个进行比较。 要真正进行排序,您可能还需要制作工具,然后将实际逻辑复制粘贴到其中。

  • 问题内容: 我当前正在使用条件来检索用户的详细信息,但是当尝试用合适的用户查询详细信息对象时,我得到了ClassCastException。 我的标准代码; 我也尝试使用; 两者都给我ClassCastException。我知道我可以通过让用户实现Serializable来轻松解决它,但是还有其他解决方案吗? 问题答案: 唯一的其他解决方案是实现Externalizable。

  • 假设我有一个字符串流: 工作正常: 比较器是一种功能接口。这意味着我们可以使用方法引用或lambdas来实现它。Comparator接口实现一个方法,该方法接受两个字符串参数并返回一个int。但是,Comparator::ReverseOrder不这样做。它是对接受零参数并返回比较器的函数的引用。这与接口不兼容。这意味着我们必须使用方法,而不是方法引用。 但我不明白。

  • 我从rest调用中获得了一个json,其格式为{“D1”:1,“D2”:1,“D3”:0,“D4”:1},它在db中存储为-{D1=1,D2=1,D3=0,D4=1}。 到目前为止我已经试过了,但没有成功- JSONParser parser=新的JSONParser();JSONObject json=(JSONObject)parser.parse(jsonString); 我想把这个json