web-dev-qa-db-ja.com

Android error "明示的なアクティビティクラスが見つかりません"

Android複数のパッケージを含むプロジェクトがあります。この場合のパッケージの構造はcom.WAPP.SetLocationです。実行したいアクティビティを含むパッケージです。

私のマニフェストでは、com.WAPPはベースパッケージと見なされます。

<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
      package="com.WAPP"
      Android:versionCode="1"
      Android:versionName="1.0">

私の活動は、マニフェストで次のように宣言されています。

<activity Android:name=".mainScreenActivity"></activity>
<activity Android:name=".SetLocation.setLocationActivity"></activity>

MainScreenアクティビティはcom.WAPPパッケージ内にあるため、正常に表示されます。しかし、setLocationActivityを実行しようとすると、明示的なクラスエラーが見つかりません。ここに私が意図パラメータを持っている方法があります:

Intent i = new Intent();
            i.setClassName("com.WAPP.SetLocation",
                           "com.WAPP.SetLocation.setLocationActivity");
            startActivity(i);
27
Johnny Rocket

最初のパラメーターはapplication packageアクティビティがあるパッケージではありません。

このようなアクティビティを呼び出すことができます。

Intent i = new Intent();
i.setClassName("com.WAPP",
               "com.WAPP.SetLocation.setLocationActivity");
startActivity(i);

SYLARRRがAndroidを使用して自動的に判断することを推奨しているため、推奨されます。

startActivity(new Intent(this, setLocationActivity.class));

Java標準ごとに、パッケージ名をすべて小文字にし、クラス名をCamelCasedにすることをお勧めします。

26
Jeremy Edwards

新しいアクティビティがMainActivityと同じパケットにない場合(ここから呼び出しますか?)、マニフェストで宣言してみてください

<activity Android:name="com.WAPP.SetLocation.setLocationActivity"></activity>

そして、呼び出し元で

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

お役に立てれば!

13
Huy Hóm Hỉnh

上記の答えに加えて、アクティビティがマニフェストのアプリケーション内で宣言されていることを確認してください

<application
    Android:allowBackup="true"
    Android:label="@string/app_name"
    Android:supportsRtl="true">

    <activity Android:name=".mainScreenActivity"></activity>
    <activity Android:name=".SetLocation.setLocationActivity"></activity>

</application>
12
polis

間違っていない場合、i.setClassName("com.WAPP.SetLocation","com.WAPP.SetLocation.setLocationActivity");i.setClassName(getBaseContext(),"setLocationActivity");でなければなりません Reference

また、この構文を試してください:

startActivity(new Intent(MyActivity.this, setLocationActivity.class));

開始点を次から削除してみてください:

<activity Android:name=".SetLocation.setLocationActivity"></activity>
3
Indrek Kõue

この方法でそれを行います:

Intent intent = new Intent();
intent.setComponent(
        new ComponentName("com.WAPP", "com.WAPP.SetLocation.setLocationActivity"));
startActivity(i);
2
Daniel De León

Xamarin Androidで、アクティビティクラスにアクティビティ属性があることを確認します

[Activity(Theme = "@style/MyTheme")]
public class MyActivity : ActivityBase
{
...
}

これで、アクティビティがAndroidManifest.xmlに登録されていることを確認しています

0

プロジェクトでも同じような問題がありました。ほぼ1日無駄にした。上記のすべてのソリューションを試しましたが、どれもうまくいきませんでした。すべてのハードワークの後、プロジェクトを「再構築」し、プロジェクトを「クリーン」するだけで、完全に機能しました。注:すべてのプロセスを実行する前に、これらのオプションを試す必要がありました。

0
Aakib Jabbar

マニフェストで.SetLoction.setLocationActivityとして宣言しましたが、パッケージ名はcom.WAPP.SetLocationであるため、再度プレフィックスを付ける必要があります。

Intent i = new Intent();
            i.setClassName("com.WAPP.SetLocation",
                           "com.WAPP.SetLocation.SetLocation.setLocationActivity");
            startActivity(i);
0