1

私はSOについて多くの同様の質問をしましたが、私を助ける解決策を提供したものはありませんでした. このアクティビティを(同じデバッグセッションで)起動できた直後に、デバッグ中に突然発生したことに言及する価値があります。重要なことは何も変更していないため、この問題がどのように発生したかはまったくわかりません。

新しいアクティビティを開始しようとすると、次のエラーが表示されます。

Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);

エラーメッセージ:

android.content.ActivityNotFoundException: 明示的なアクティビティ クラス {com.xxx/com.xxx.MainActivity} が見つかりません。AndroidManifest.xml でこのアクティビティを宣言しましたか?

両方のアクティビティが同じパッケージで宣言されていますcom.xxx。マニフェスト (無関係なコードを削除):

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

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

    <application
        android:name="misc.App"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:replace="android:icon">
        <activity
            android:name=".SplashActivity"
            android:theme="@android:style/Theme.NoTitleBar">
            <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=""
            android:theme="@style/Theme.AppCompat.NoActionBar" />
    </application>
</manifest>

マニフェストと作成時の両方に明示的なパスを配置するなどのことを試しましたIntentが、プロジェクトをクリーンアップするだけでなく、役に立ちませんでした。

何か案が?ありがとう!

編集:プロジェクト構造の活動部分は次のとおりです。

画像

4

1 に答える 1

0

のクリーン コピーを作成しMainActivity、xml を複製し、すべての参照を古いアクティビティに置き換えたところ、動作しました。マニフェストの宣言も同じです。

この問題が発生した理由はわかりませんが、詳細な調査は間違いなく価値がないため、この回避策が最も時間のかからない解決策です。

編集:私はこの問題に再び直面し、本当の問題を見つけました。前述のアクティビティを無効にするコードがありActivityNotFoundException、アプリを閉じて再度開いたときにもスローされます。キャッシュをクリアすると、状況も明らかになったと思います。

とにかく、呼び出しアクティビティに一時的なコードを追加して有効MainActivityにしたところ、機能しました。

PackageManager pm = getPackageManager();
pm.setComponentEnabledSetting(new ComponentName(this, MainActivity.class),
                PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

関係のない無効化コードを明らかに削除しました。

于 2016-12-21T10:37:08.447 に答える