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);
最初のパラメーターは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にすることをお勧めします。
新しいアクティビティがMainActivityと同じパケットにない場合(ここから呼び出しますか?)、マニフェストで宣言してみてください
<activity Android:name="com.WAPP.SetLocation.setLocationActivity"></activity>
そして、呼び出し元で
Intent intent = new Intent(this, setLocationActivity.class);
startActivity(intent);
お役に立てれば!
上記の答えに加えて、アクティビティがマニフェストのアプリケーション内で宣言されていることを確認してください
<application
Android:allowBackup="true"
Android:label="@string/app_name"
Android:supportsRtl="true">
<activity Android:name=".mainScreenActivity"></activity>
<activity Android:name=".SetLocation.setLocationActivity"></activity>
</application>
間違っていない場合、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>
この方法でそれを行います:
Intent intent = new Intent();
intent.setComponent(
new ComponentName("com.WAPP", "com.WAPP.SetLocation.setLocationActivity"));
startActivity(i);
Xamarin Androidで、アクティビティクラスにアクティビティ属性があることを確認します
[Activity(Theme = "@style/MyTheme")]
public class MyActivity : ActivityBase
{
...
}
これで、アクティビティがAndroidManifest.xmlに登録されていることを確認しています
プロジェクトでも同じような問題がありました。ほぼ1日無駄にした。上記のすべてのソリューションを試しましたが、どれもうまくいきませんでした。すべてのハードワークの後、プロジェクトを「再構築」し、プロジェクトを「クリーン」するだけで、完全に機能しました。注:すべてのプロセスを実行する前に、これらのオプションを試す必要がありました。
マニフェストで.SetLoction.setLocationActivityとして宣言しましたが、パッケージ名はcom.WAPP.SetLocationであるため、再度プレフィックスを付ける必要があります。
Intent i = new Intent();
i.setClassName("com.WAPP.SetLocation",
"com.WAPP.SetLocation.SetLocation.setLocationActivity");
startActivity(i);