Ошибка при запуске приложения в первый раз не может привести к проблеме - PullRequest
0 голосов
/ 04 сентября 2018

E/AndroidRuntime: FATAL EXCEPTION: main Process: de.mywoofi.app, PID: 17970 java.lang.RuntimeException: Unable to instantiate application de.mywoofi.app.MyWoofiApplication_: java.lang.ClassCastException: de.mywoofi.app.MyWoofiApplication_ cannot be cast to android.app.Application at android.app.LoadedApk.makeApplication(LoadedApk.java:1069) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5842) at android.app.ActivityThread.access$1100(ActivityThread.java:199) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6669) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) Caused by: java.lang.ClassCastException: de.mywoofi.app.MyWoofiApplication_ cannot be cast to android.app.Application at android.app.AppComponentFactory.instantiateApplication(AppComponentFactory.java:50) at android.support.v4.app.CoreComponentFactory.instantiateApplication(CoreComponentFactory.java:49) at android.app.Instrumentation.newApplication(Instrumentation.java:1120) at android.app.LoadedApk.makeApplication(LoadedApk.java:1061) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5842) at android.app.ActivityThread.access$1100(ActivityThread.java:199) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6669) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

Проблема в том, что я понятия не имею, каково точное решение. Я пробовал много "решений" с этой страницы, но, возможно, я глуп, чтобы решить эту проблему. Если есть какой-либо запрос на какой-либо код, пожалуйста, спросите.

Спасибо за вашу помощь!

Запрошенный класс (сокращенный)

@EActivity(de.mywoofi.app.R.layout.activity_main)
public class MyWoofiApplication extends Activity
{ [...]
}

И актерский состав:

<application
    android:name=".MyWoofiApplication_"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    tools:replace="android:icon"
    android:fullBackupContent="true"
    tools:ignore="AllowBackup,GoogleAppIndexingWarning">
    <activity
        android:name=".ui.activity.SplashActivity_"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.Full"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

Мой обновленный манифест

<application
    android:name=".ApplicationClass"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    tools:replace="android:icon"
    android:fullBackupContent="true"
    tools:ignore="AllowBackup,GoogleAppIndexingWarning">
    <activity
        android:name=".ui.activity.SplashActivity_"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.Full"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

вот мой ApplicationClass.java

public class ApplicationClass extends Application{

@Override
public void onCreate(){
    super.onCreate();
    StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
    .detectAll()
    .penaltyLog()
    .build());
}

}

Ответы [ 4 ]

0 голосов
/ 04 сентября 2018

MyWoofiApplication_ расширяет активность, поэтому вы не можете привести ее к приложению.

Вы можете удалить android: name = ". MyWoofiApplication _" из тега приложения, чтобы решить вашу проблему.

0 голосов
/ 04 сентября 2018

у вас есть эта строка в манифесте:

<application
    android:name=".MyWoofiApplication_"

поэтому MyWoofiApplication_ должно расширяться android.app.Application, но этого не произошло, поэтому у вас есть это исключение:

de.mywoofi.app.MyWoofiApplication_ cannot be cast to android.app.Application
0 голосов
/ 04 сентября 2018

Приложение должно расширять приложение и упомянуто в файле манифеста & MainActivity расширяет активность

Вы получили ошибку, потому что ваше MyWoofiApplication_ не расширено. Приложение имеет расширенное действие , поэтому получило вот почему вы получили эту ошибку:

de.mywoofi.app.MyWoofiApplication_ cannot be cast to android.app.Application

Класс применения

public class ApplicationClass extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
                .detectAll()
                .penaltyLog()
                .build());
    }
}

Файл манифеста

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

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

    <application
        android:name=".ApplicationClass"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".SplashActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait"
            android:theme="@style/AppTheme.NoActionBar"
            android:windowSoftInputMode="adjustResize" />
    </application>

MainActivity.java

public class MainActivity extends Activity {    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
        setContentView(R.layout.activity_main);       
    }
 }

Надеюсь, вы понимаете сейчас, и это может помочь вам.

0 голосов
/ 04 сентября 2018

В имени андроида - в Manifest.xml у вас есть это MyWoofiApplication_, но вам нужно только это MyWoofiApplication я прав?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...