I have a problem, my app generate this exception,and i don’t understand. I have implement the multiDexEnabled in my build.gradle
Caused by: java.lang.ClassCastException: android.support.multidex.MultiDexApplication cannot be cast to com.example.AnalyticsApplication
My Class Java
public class Splash extends Activity { private Tracker mTracker; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_splash); //Analitycs AnalyticsApplication application = (AnalyticsApplication) getApplication(); mTracker = application.getDefaultTracker(); mTracker.setScreenName("Splash"); mTracker.send(new HitBuilders.ScreenViewBuilder().build());
}
file Gradle
defaultConfig { multiDexEnabled true }
Manifest.xml
<uses-permissionandroid:name="android.permission.INTERNET"/> <uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/> <application android:name="android.support.multidex.MultiDexApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activityandroid:name=".Splash"> <intent-filter> <actionandroid:name="android.intent.action.MAIN"/> <categoryandroid:name="android.intent.category.LAUNCHER"/> </intent-filter></activity> </application>
Advertisement
Answer
I think you should extend the AnalyticsApplication
class into your own class, like this:
public class YourApplicationName extends AnalyticsApplication { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_splash); //Analitycs AnalyticsApplication application = (AnalyticsApplication) getApplication(); mTracker = application.getDefaultTracker(); mTracker.setScreenName("Splash"); mTracker.send(new HitBuilders.ScreenViewBuilder().build()); } // Here you will enable Multidex @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(getBaseContext()); } }
After this, you must change your AndroidManifest.xml
file to this:
<application android:name="path.to.YourApplicationName" ...
Please, check this link for more information: http://developer.android.com/reference/android/support/multidex/MultiDex.html