0

別のアクティビティを開始しようとすると、Android.Content.ActivityNotFoundExceptionが発生します。私はこれが可能か不可能かを私に知らせる情報を見つけることができませんでした。Android.Content.ActivityNotFoundException(アクティビティから派生したクラスから派生したクラス)

これは、活動を開始する方法です。

var intent = new Intent(this, typeof (ClassB)); 
intent.PutExtra("mac",mac); 
intent.SetFlags(ActivityFlags.SingleTop); 
StartActivityForResult(intent,_requestcodeControl); 

これは、ClassBのである:

[Activity(Label = "ClassB", MainLauncher = false)] 
public class ClassB : ClassA 
{ 


    protected override void OnCreate(Bundle bundle) 
    { 
     Log.Debug(TAG, "OnCreate"); 
     base.OnCreate(bundle); 
    ..... 

そして、これはにClassAです:

public abstract class ClassA : Activity 
{ 

    protected override void OnCreate(Bundle savedInstanceState) 
    { 
     base.OnCreate(savedInstanceState); 

    ..... 

は、私のような活動を定義することができますそれ?

// edit: Monodroidがそれらを追加しなかったので、2つのクラスが表示されるようにManifest.xmlを調整しました。

<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" android:versionCode="1" android:versionName="0.0.1a"> 
    <application android:label="A" android:name="mono.android.app.Application" android:debuggable="true"> 
    <activity android:label="Classb" android:name="androidprotoype_mono.devices.ClassB" /> 
    <activity android:label="ClassA" android:name="androidprotoype_mono.devices.ClassA" /> 
    </application> 
.... 

もう例外はありませんが、以前はアプリがクラッシュしました。

E/AndroidRuntime(28005): FATAL EXCEPTION: main 
E/AndroidRuntime(28005): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{AndroidProtoype_Mono.AndroidProtoype_Mono/androidprotoype_mono.devices.ClassB}: java.lang.InstantiationException: androidprotoype_mono.devices.ClassB 
E/AndroidRuntime(28005):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1573) 
E/AndroidRuntime(28005):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 
E/AndroidRuntime(28005):  at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
E/AndroidRuntime(28005):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 
E/AndroidRuntime(28005):  at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(28005):  at android.os.Looper.loop(Looper.java:130) 
E/AndroidRuntime(28005):  at android.app.ActivityThread.main(ActivityThread.java:3691) 
E/AndroidRuntime(28005):  at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(28005):  at java.lang.reflect.Method.invoke(Method.java:507) 
E/AndroidRuntime(28005):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907) 
E/AndroidRuntime(28005):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665) 
E/AndroidRuntime(28005):  at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime(28005): Caused by: java.lang.InstantiationException: androidprotoype_mono.devices.Samson64952 
E/AndroidRuntime(28005):  at java.lang.Class.newInstanceImpl(Native Method) 
E/AndroidRuntime(28005):  at java.lang.Class.newInstance(Class.java:1409) 
E/AndroidRuntime(28005):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
E/AndroidRuntime(28005):  at  android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1565) 
E/AndroidRuntime(28005):  ... 11 more 

私は質問を後退:

これは、ログが言うことです。派生クラスの抽象クラスを作成しました。これは明らかに欠陥だった。

+2

AndroidManifestにそのアクティビティを正しく登録しましたか? *(はいの場合、エラーが続く、このマニフェストセクションを投稿してください)* –

+2

まあ、マニフェストで両方のアクティビティを宣言しましたか? – Th0rndike

+0

マニフェストファイルにアクティビティを登録する必要があります http://stackoverflow.com/questions/4481903/how-to-register-a-new-activity-in-manifest-xml – vipin

答えて

0

これはうまくいきました。

私は何とかアクティビティを実際に抽象化したいと考えました。 < - 実際のエラー クラスが抽象クラスであったため、マニフェストファイルは更新されませんでした。マニフェストには非抽象クラスのみが存在し、動作します。

サブフォルダは問題ありません。それはすべて、その小さな抽象です。

関連する問題