2012-12-16 7 views
7

Ich möchte eine Runnable in eine Aktivität über ein Bündel übergeben, so dass Runnable ausgeführt werden muss, wenn OnCreate ausgelöst wird. Ich schrieb eine Klasse, die Serializable implementiert, aber es verursacht eine Ausnahme: "java.lang.RuntimeException: Parcelable encountered IOException writing serializable object". Mein Code geht hier:Wie setze ich ein Runnable ins Bundle?

package some.company.common; 

import java.io.Serializable; 

public class SerializedRunnable implements Serializable, Runnable { 

    private static final long serialVersionUID = 6641813629033240205L; 

    public SerializedRunnable() { 
    } 

    private Runnable runnable; 

    public SerializedRunnable(Runnable runnable) { 
     this.runnable = runnable; 
    } 

    @Override 
    public void run() { 
     this.runnable.run(); 
    } 

} 
+2

es nur der Inhalt des Objekts, das serialisiert werden. Warum möchten Sie ein Runnable serialisieren, was eine Verschwendung ist? Sie können immer nur die Daten an einen anderen runnable übergeben, die diese Daten und Prozess dauern wird – nandeesh

Antwort

0

Es ist wie Runnable aussieht, ist nicht serialisierbar. Um Ihre eigene Serialisierung zu implementieren, müssen Sie readObject und writeObject selbst implementieren.

prüfen here

+0

Ich habe zwei Methoden wie folgt aus: \t 'private void readObject- (Object aInputStream) \t \t \t wirft ClassNotFoundException, IOException { \t \t aInputStream.defaultReadObject(); \t} \t private void write (Object aOutputStream) \t \t \t throws IOException { \t \t aOutputStream.defaultWriteObject(); \t} ' aber der gleiche Fehler wird fortgesetzt. –