Сбой newInstance: нет <init> - PullRequest
       16

Сбой newInstance: нет <init>

10 голосов
/ 23 января 2010

Я не могу создать экземпляр подоперации. В 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 расширения выше Активности

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

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

1 Ответ

20 голосов
/ 24 января 2010

dalvikvm ищет конструктор с нулевым аргументом (это то, что они подразумевают под «нулевым», как в «двоичном» для 2 аргументов, «унарный» для 1 аргумента, это «нулевой» для 0 аргументов).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...