web-dev-qa-db-ja.com

android.content.ActivityNotFoundException:

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

Android.content.ActivityNotFoundException:明示的なアクティビティクラス{com.x.y/com.x.y.class}が見つかりません;

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

私のAndroidManifest.xmlのコンテンツは次のとおりです。

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

私は何かが欠けていますか?

21
sharath

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

例:

<activity
      Android:name=".className" 
      Android:label="@string/app_name" > 
</activity>
31
Mina Samy

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

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

_Intent intent = new Intent( this, class );
_

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

私が得ていたこの例外は、実際には意図によるものではありませんでしたが、ロードされたアクティビティ内でRuntimeExceptionをスローするコードを実行していました。 (私の問題はTypeface.createFromAsset()が原因でした)

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

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

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

アプリを再度実行し、LogCatを確認します。同じ問題である場合は、実際の問題を指す「原因:」エントリでRuntimeExceptionが表示されます。

私はこれを理解しようとしてかなりの時間を費やしました。これが誰かの時間を節約することを願っています。

16
thepearson

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

14
Gangnus

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

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

8
bicha

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

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

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

3
Andy Lin

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

2
M.K.

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

それらをActivity.thisに置き換えましたが、問題はなくなりました。

Android男はそれをしなくても回避策を講じることができます。それがどうなるか聞きたいのですが。

1
meboy

(内部クラスとして)別のクラス内にアクティビティを実装すると、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)として宣言し、それに応じてマニフェストを変更した後、通常どおり機能しました。

1
Carl K.

ちょっと、別の形式のIntentコンストラクターを使用する必要があります。これにより、1秒以内に問題が確実に解決されます。

例:

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

startActivity(inte);

これは完璧に機能し、私はこのコードをチェックしました。

1
Jalp

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

action Android:name="com.kaushalam.activity101activity.SecondActivity"
category Android:name="Android.intent.category.DEFAULT"
0
Girish Chauhan

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

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

ここで.appはパッケージ名に由来し、.helpers.afdfa $ afdaになります

0
Yaya

私も同じケースを得ました。ピアソンの答えを読んだ後、アクティビティを修正し、書いたことを知りました

public void onCreate(Bundle s)

しかし、実際には

protected void onCreate(Bundle s)

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

0
Patrick Chan

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

0
Sudhin Philip

ドキュメントを見る here 欲しいものは:

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

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

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

これは私のために働く

0
sab

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

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

manifestmerger.enabled = true

0
Jeevan

プロジェクトのbinフォルダーにあるAndroid Manifest File。 binフォルダーは元のマニフェストと一致しませんでしたが、これはおそらくEclipseの間違いです。

0
user3491579

呼び出しているアクティビティには、「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);
0
Evgenii Vorobei

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

intent.setClassName(CallingActivity.this, activityToLaunch.getComponentName().getClassName());
0
AndroidGuy

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

0
mabeiyi

私が同じ問題を抱えているとき。ライブラリクラスファイルを使用してAndroidマニフェストファイルに書き込み、この部分をライブラリプロジェクトマニフェストファイルから削除する場合は、この部分>>を実行すると、完全に機能します。

0
user2123720

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

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

  • 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>
0
Petru