non posso istanziare un'attività secondaria. Nel logcat vedo questa riga:newInstance fallito: nessun <init>
01-22 15:14:38.906: DEBUG/dalvikvm(411): newInstance failed: no <init>()
Questa è la riga in dalvik che genera quel 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();
}
Ecco l'azione che eseguo per attivare l'attività in un gestore di timer.
// move on to Activation
// ePNSplash is this activity a splash screen
Intent i = new Intent (ePNSplash.this, Activation.class);
startActivity (i);
L'attività che sto cercando di iniziare è 2 estensioni di cui sopra Attività
Ecco la prima estensione
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;
}
Questo è solo il costruttore, che sembra essere la parte che ha il problema. Ecco la seconda estensione e la classe che sto cercando di creare.
public class Activation extends AndroidScreen {
public Activation (String title, AndroidScreen parent, AndroidScreen main)
{
super (title, parent, main);
}
Sono assolutamente confuso, ho un costruttore, mi assicuro che io chiamo i miei costruttori di super, che cosa potrebbe essere sbagliato?
Grazie
Julian
Ha funzionato, grazie. – Bodger
Il mio problema era un IntentService che la classe astratta non definisce un costruttore predefinito, solo un costruttore con un argomento (nome String). Di conseguenza, sono stato confuso dal compilatore sull'implementazione di un costruttore predefinito e l'ho lasciato fuori. Quando l'ho aggiunto come MyIntentService() {super (null); } ha funzionato tutto. Questo era così contro intuitivo - grazie per il q & a su questa eccezione. – mobibob
Non potevo credere ai miei occhi quando funzionava !!! Ho istanziato e pre-gonfiato frammenti e un argo zero è stato aggiunto quando ho letto questo e ha funzionato. Chi potrei revocare questo ancora di più! –