“我的碎片上有错误”;android.app.Application不能强制转换为;

“我的碎片上有错误”;android.app.Application不能强制转换为;,android,google-analytics,fragment,Android,Google Analytics,Fragment,下面是一个问题: 我有一个应用程序,它实现了一个导航抽屉,所以它们是片段,但是谷歌分析在这一行不起作用: final Tracker tracker = ((App) getActivity().getApplication()).getTracker(); 片段: public class Accueil extends android.support.v4.app.Fragment { @Override public void onResume() { super.onRes

下面是一个问题: 我有一个应用程序,它实现了一个
导航抽屉
,所以它们是
片段
,但是
谷歌分析
在这一行不起作用:

final Tracker tracker = ((App) getActivity().getApplication()).getTracker();
片段

public class Accueil extends android.support.v4.app.Fragment {

@Override
public void onResume() {

    super.onResume();

    final Tracker tracker = ((App) getActivity().getApplication()).getTracker();
    if(tracker != null){

        tracker.setScreenName(getClass().getSimpleName());
        tracker.send(new HitBuilders.ScreenViewBuilder().build());
    }
}
    }
应用程序

public class App extends Application {
private static final String TAG = "App";
public synchronized Tracker getTracker() {

    try {
        final GoogleAnalytics googleAnalytics = GoogleAnalytics.getInstance(this);
        return googleAnalytics.newTracker(R.xml.app_tracker);

    }catch(final Exception e){
        Log.e(TAG, "Failed to initialize Google Analytics V4");
    }

    return null;
}
}
我有
导航抽屉的
main活动

public class MainActivity extends AppCompatActivity implements FragmentDrawer.FragmentDrawerListener {
...
}
日志:

07-09 08:23:06.688    1125-1125/(package) E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to resume activity {(package)/(package).MainActivity}: java.lang.ClassCastException: android.app.Application cannot be cast to (package).App
            at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2443)
            at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2471)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1985)
            at android.app.ActivityThread.access$600(ActivityThread.java:122)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4340)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to (package).App
            at (package).Accueil.onResume(Accueil.java:53)
            at android.support.v4.app.Fragment.performResume(Fragment.java:1832)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:995)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1120)
            at android.support.v4.app.FragmentManagerImpl.dispatchResume(FragmentManager.java:1939)
            at android.support.v4.app.FragmentActivity.onResumeFragments(FragmentActivity.java:447)
            at android.support.v4.app.FragmentActivity.onPostResume(FragmentActivity.java:436)
            at android.support.v7.app.AppCompatActivity.onPostResume(AppCompatActivity.java:138)
            at android.app.Activity.performResume(Activity.java:4552)
            at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2433)
            at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2471)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1985)
            at android.app.ActivityThread.access$600(ActivityThread.java:122)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4340)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
            at dalvik.system.NativeStart.main(Native Method)
将应用程序类放入AndroidManifest时出错:

on:android:label=“@string/app_name”错误=(包)。应用程序不可分配给“android.app.activity”:

<activity
    android:name=".App"
    android:label="@string/app_name"
    android:screenOrientation="portrait">
    <intent-filter>
        <action android:name="android.intent.action.APP" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

这里是定义包、应用程序上下文和主要活动的最低清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="my.app.package.name">

    <application
        android:name=".MyCustomApplicationContext"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">

        <activity
            android:name=".MainActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
通过扩展第一个Impl链接应用程序上下文。上下文。这一个现在包括应用程序和UTILAP之外的所有有用方法

public class MyApp extends UtilApp {
    ...
    some useful methods
    ...
}
使用最高的impl。在链中作为您的上下文

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


您是否在清单中声明了应用程序的子类?正如Blackbelt所说,异常表明您使用的应用程序上下文仍然是基本impl。而不是你的SDK。只有在清单应用程序标记中定义时,才会加载您自己的应用程序上下文。@Blackbelt在谈论应用程序类吗?我已经尝试将其放入我的mManifest中,但我遇到了一个错误,请查看我的编辑,而不是使用
。App
使用完全限定的程序包来
App
,但您的标签不正确。它出现在应用程序标签上,而不是活动的oneI see中,谢谢,如果我有两个类扩展应用程序,我们将如何做?那么你必须链接它们,因为Android应用程序只能有一个应用程序上下文!
<application
        android:name=".MyApp" ...>