21

別のアクティビティからアクティビティを呼び出そうとしているときに、この例外が発生します。完全な例外は

android.content.ActivityNotFoundException:明示的なアクティビティクラス{com.xy/com.xyclass}が見つかりません。

私はintent.setClass("com.x.y","com.x.y.className")whereclassNameを実行しています。ここで、はアクティビティクラスの名前であり、com.x.yはそれが存在するパッケージです。

私のAndroidManifest.xmlには次のコンテンツが含まれています。

<activity android:name="com.x.y.className" android:label="@string/app_name">

私は何かが足りないのですか?

4

24 に答える 24

34

たぶん、manifest.xmlファイルに新しいアクティビティを追加したことを確認する必要があります

例:

<activity
      android:name=".className" 
      android:label="@string/app_name" > 
</activity>
于 2010-08-08T09:45:14.310 に答える
16

他の人が似たようなことに遭遇してこの投稿にたどり着いた場合、私が抱えていた問題があなたの時間を節約するかもしれません。OPの問題には関連していない可能性がありますが、ActivityNotFound例外に関連しているdefです。

私は以下を使用してアクティビティをロードしようとしていました:

Intent intent = new Intent( this, class );

しかしActivityNotFoundException、コードを何度もチェックして再チェックしたにもかかわらず、私は継続的に取得し続けました。

私が受けていたこの例外は、実際にはインテントが原因ではありませんでしたが、ロードされたアクティビティ内で実行していたコードが。をスローしていましたRuntimeException。(私の問題はによって引き起こされましたTypeface.createFromAsset()

アクティビティで同様のRuntimeExceptionが発生している可能性があります。

これが当てはまるかどうかを確認するには、インテントコードをtrycatchブロックに入れます。そのようです:

try {
    /* your code */
    ...
} catch ( ActivityNotFoundException e) {
    e.printStackTrace();
}

アプリを再度実行し、LogCatを確認します。同じ問題である場合は、実際の問題を指す「CausedBy:」エントリを含むRuntimeExceptionが発生します。

私はこれを理解しようとかなりの時間を費やしました。うまくいけば、これは誰かの時間を節約するかもしれません。

于 2011-06-09T09:06:17.680 に答える
14

呼び出しているアクティビティは、それ自体のパッケージのマニフェストだけでなく、CALLINGパッケージのマニフェストにも表示される必要があります。

于 2011-05-27T11:54:23.790 に答える
8

マニフェストからアクティビティを削除してから、もう一度追加します。このタイプは、XMLを直接書き込むタイプではありません。代わりに、に移動しApplication > Application nodes > add、アクティビティを選択してから、ファイルソースを参照します。

これは私のために働いた。

于 2012-09-01T19:01:08.410 に答える
3

intent.setClassは、パラメータを「パッケージコンテキスト」および「クラス」として受け取ります。例は次のとおりです。

intent.setClass(CurrentActivity.this, TargetActivity.class);

また、アクティビティがマニフェストファイルに登録されているかどうかを確認する必要があります。

于 2010-08-08T09:32:01.317 に答える
2

新しいアクティビティを追加してmanifest.xmlで定義しましたが、それでも「明示的なアクティビティクラスが見つかりません」というエラーが発生していました。私はEclipseを使用しています。私の問題の解決策は、プロジェクトを「クリーンアップ」することでした。Eclipseのメインメニューから:Project | Clean ....次に、プロジェクトを選択してクリーンアップします。

于 2011-11-15T08:28:44.510 に答える
1

ねえ、あなたは別の形式のインテントコンストラクターを使う必要があります。これにより、1秒以内に問題が確実に解決されます。

例:

Intent inte=new Intent(getBaseContext(),"your class name with .class extension ");

startActivity(inte);

これは完全に機能し、このコードをチェックしました。正しく機能しています。

于 2011-12-05T07:52:07.327 に答える
1

別のクラス内(内部クラスとして)にActivityを実装したときに、ActivityNotFoundExceptionが発生しました。

//... inside the utility class Pref
public static class Activity extends PreferenceActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.prefs);
    }
}
//...

マニフェスト内で次のように宣言されています。

<activity android:name=".Pref.Activity"
...

これを通常のクラス(パブリッククラスPrefActicity)として宣言し、それに応じてマニフェストを変更した後、通常どおりに機能しました。

于 2012-01-12T06:01:28.237 に答える
1

getActivityContext()メニューコードに(の代わりに)を使用しActivity.thisて作業を保存し、毎回編集せずに各アクティビティにコピーアンドペーストしました。

それらをに置き換えたActivity.thisところ、問題は解決しました。

私は、より賢いAndroidの人がそれをする必要がないことを回避できると感じています。それがどうなるか聞きたいです。

于 2012-09-12T00:19:33.823 に答える
0

ここで必要なドキュメントを見ると、次のようになります。

intent.setClassName("com.x.y", "className");
于 2010-08-08T09:42:04.347 に答える
0

Eclipseを再起動し、マニフェストファイルを再度確認します。それぞれのアクティビティが欠落している場合は、それを追加して再試行してください。それは私の同様の問題を解決しました。

于 2012-01-31T13:50:36.120 に答える
0

以下を使用してみてください。

intent.setClassName("com.x.y", "com.x.y.className");

これは私のために働く

于 2012-02-16T23:37:40.163 に答える
0

ミナの答えに加えて。アクティビティを内部静的クラスとして宣言する場合は、アクティビティを次のようにマニフェストに書き込む必要があります...

         <activity android:name=".app.FragmentLayoutSupport$DetailsActivity" />

ここで、.appはパッケージ名に由来し、.helpers.afdfa$afdaにすることができます。

于 2012-03-01T07:49:04.030 に答える
0

このエラーに対する私の解決策は、マニフェストの名前の前にパッケージ名を追加することでした。

私は次の活動をしました:

  • id.scanner.main.A1

  • id.scanner.main.gallery.A2

私のマニフェストには次のものが含まれていました。

<activity android:name=".A1" ....></activity>
<activity android:name=".A2" ....></activity>

これで問題は解決しました。

<activity android:name=".A1" ....></activity>
<activity android:name="gallery.A2" ....></activity>
于 2012-03-23T20:17:04.893 に答える
0

ええ、私もこの問題を抱えています。プロジェクトを更新しました。そして、すべてが正常に機能します。

于 2013-03-08T17:24:37.320 に答える
0

私が同じ問題を抱えているとき。ライブラリクラスファイルを使用していて、Androidマニフェストファイルに書き込む場合は、次のように記述してから、ライブラリプロジェクトマニフェストファイルをこの部分で削除します>>。

于 2013-04-26T06:31:25.067 に答える
0

この例外は、アプリにライブラリを含め、ライブラリがライブラリプロジェクトで定義されたアクティビティを呼び出している場合にも発生します。この場合、ライブラリのマニフェストを呼び出し元のアプリのマニフェストとマージする必要があります。

ADTバージョン20では、呼び出し元のappのproject.propertiesに以下のステートメントを追加することでこれを行うことができます。

マニフェストマージャー.enabled=true

于 2014-01-21T11:40:26.177 に答える
0

プロジェクトのbinフォルダーにあるAndroidマニフェストファイルの内容を確認してください。アプリをコンパイルしてパッケージ化すると、マニフェストファイルがbinフォルダーにコピーされます。私の場合、binフォルダー内のマニフェストは元のマニフェストと一致しませんでした。これはおそらくEclipseの間違いです。マニフェストを手動でbinフォルダーにコピーしましたが、機能しました。

于 2014-04-08T12:54:04.173 に答える
0

manifiest.xmlこのコードをファイルに追加できます

action android:name="com.kaushalam.activity101activity.SecondActivity"
category android:name="android.intent.category.DEFAULT"
于 2014-06-27T05:40:42.283 に答える
0

私も同じケースになりました。ピアソンの答えを読んだ後、私は自分のアクティビティを修正し、自分が書いたことがわかりました

public void onCreate(Bundle s)

しかし、実際にはそうあるべきです

protected void onCreate(Bundle s)

そしてそれは今動作します!

于 2015-01-07T04:56:15.653 に答える
0

これは、Activityオブジェクト(起動する必要がある)がある場合に機能します。

intent.setClassName(CallingActivity.this, activityToLaunch.getComponentName().getClassName());
于 2015-05-13T05:08:16.497 に答える
0

呼び出しているアクティビティには「sheme」が含まれておらず、intent-filterが含まれています。

<activity android:name=".SecondActivity">
        <intent-filter>
               <action android:name="com.example.sj.myapplication.SecondActivity"/>
               <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
</activity>

したがって、コードの呼び出しでは:

Intent intent=new Intent("com.example.sj.myapplication.SecondActivity");
startActivity(intent);
于 2017-01-30T11:12:36.490 に答える
0

また、間違ったビューをsetContentView()に渡すことにより、ActivityNotFoundExceptionが発生しました。各アクティビティのクラスファイルは、この方法でレイアウトxmlファイルに対応している必要があります。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.wrongView);
}

とは対照的に

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.correctView);
}
于 2019-11-20T02:56:11.827 に答える
-1

私も同じ問題を抱えていました。後で整理したエラー以外はすべて試しましたが、二重引用符とクラス名の間にスペースが残っていました。それは次のようにする必要があります: intent.setClassName("com.x.y","com.x.y.className")

いいえ

intent.setClassName("com.x.y","  com.x.y.className")
于 2011-11-19T11:59:53.157 に答える