Android.Content.ActivityNotFoundException (для класса, производного от класса, производного от Activity) - PullRequest
0 голосов
/ 29 марта 2012

Я получаю исключение 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);

   .....

Могу ли я определить активность таким образом?

// редактировать: Я настроил свой Manifest.xml так, чтобы появились эти 2 класса, потому что монодроид не добавил их.

<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

Я отступаю от Вопроса. Сделал также производный класс абстрактным. Это была явно ошибка.

1 Ответ

0 голосов
/ 30 марта 2012

Хорошо, все заработало.

Я каким-то образом сделал Activity, но на самом деле тоже хотел начать абстрагироваться. <- фактическая ошибка Файл манифеста не был обновлен, поскольку оба класса были абстрактными. Теперь в манифесте присутствует только неабстрактный класс, и он работает. </p>

Вложенные папки не проблема, все было в том небольшом резюме.

...