Подтвердить что ты не робот

NewInstance не удалось: no <init>

Я не могу создать суб-активность. В logcat я вижу эту строку:

01-22 15:14:38.906: DEBUG/dalvikvm(411): newInstance failed: no <init>()

Это строка в dalvik, которая генерирует этот logcat.

/*
 * public T newInstance() throws InstantiationException, IllegalAccessException
 *
 * Create a new instance of this class.
 */
static void Dalvik_java_lang_Class_newInstance(const u4* args, JValue* pResult)
...
    /* find the "nullary" constructor */
    init = dvmFindDirectMethodByDescriptor(clazz, "<init>", "()V");
    if (init == NULL) {
        /* common cause: secret "this" arg on non-static inner class ctor */
        LOGD("newInstance failed: no <init>()\n");
        dvmThrowExceptionWithClassMessage("Ljava/lang/InstantiationException;",
            clazz->descriptor);
        RETURN_VOID();
    }

Вот действие, которое я предпринимаю, чтобы активировать действие в обработчике таймера.

// move on to Activation
// ePNSplash is this activity a splash screen

Intent i = new Intent (ePNSplash.this, Activation.class);
startActivity (i);

Активность, которую я пытаюсь запустить, - это 2 расширения над Activity

Вот первое расширение

public abstract class AndroidScreen extends Activity {
    ....

public AndroidScreen (String title, AndroidScreen parent, AndroidScreen main)
{
    super ();

    myGlobals = Globals.getGlobals ();

    myGlobals.myLogger.logString("AndroidScreen: 001");

    myParent = parent;
    myMainScreen = main;
    myTitle = title;
}

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

public class Activation extends AndroidScreen {

public Activation (String title, AndroidScreen parent, AndroidScreen main)
{
    super (title, parent, main);
}

Я абсолютно смущен, у меня есть конструктор, я убеждаюсь, что я называю мои супер конструкторы, что может быть неправильным?

Спасибо

Julian

4b9b3361

Ответ 1

dalvikvm ищет конструктор с нулевым аргументом (что означает "нулевой", как в "двоичном" для двух аргументов, "унарный" для 1 аргумента, он "nullary" для 0 аргументов).

в показанном фрагменте, у вас есть только конструктор с тремя аргументами. что ничего хорошего: вы будете созданы без аргументов, поэтому вам нужен конструктор с нулевым аргументом.