Kann nicht benutzerdefinierte Objekt in einer Absicht passieren: Die Methode Put Extra ist zweideutig für den Typ Intent

Wenn ich versuche zu schreiben

Car myCarObject=getCar(); Intent details = new Intent(Start.this, DetailsCar.class); details.putExtra("Car", myCarObject); startActivity(details); 

Eclipse zeigt mir einen Kompilationsfehler "Die Methode Put Extra ist für den Typ Intent" in der Zeile zweideutig

  • Wie benutzt man das von GoogleAuthUtil.getToken mit meinem App Engine-Backend zurückgegebene Token
  • Wie bekomme ich heute die Anzahl der Millisekunden
  • Aktionsleisten-Navigationsmodi sind in Android L veraltet
  • Bilder zwischenspeichern und anzeigen
  • Android H.264 BaseProfile Level Unterstützung
  • Fehler werden: 'shared_ptr' im Namespace 'std' nennt keinen Typ
  •   details.putExtra("Car", myCarObject); 

    Wenn ich den Code verwende

     Car myCarObject=getCar(); ArrayList<Car> parcelableExtra = new ArrayList<Car>(); parcelableExtra.add(myCarObject); Intent details = new Intent(Start.this, DetailsCar.class); details.putExtra("Car", parcelableExtra); startActivity(dettagli); 

    Und ich versuche, das Extra mit diesem Code in der Zielabsicht mit zu laden

     ArrayList<Car> parcelableExtra = new ArrayList<Car>(); parcelableExtra = (ArrayList<Car>) getIntent().getExtras().getParcelable("Car"); Car c=parcelableExtra.get(0); 

    Ich bekomme diese Warnung

     12-14 05:30:07.669: W/Bundle(19823): Key Car expected Parcelable but value was a java.util.ArrayList. The default value <null> was returned. 12-14 05:30:07.679: W/Bundle(19823): Attempt to cast generated internal exception: 12-14 05:30:07.679: W/Bundle(19823): java.lang.ClassCastException: java.util.ArrayList 12-14 05:30:07.679: W/Bundle(19823): at android.os.Bundle.getParcelable(Bundle.java:1106) 12-14 05:30:07.679: W/Bundle(19823): at my.app.com.DetailsCar.onCreate(DetailsCar.java:43) 12-14 05:30:07.679: W/Bundle(19823): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 12-14 05:30:07.679: W/Bundle(19823): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 12-14 05:30:07.679: W/Bundle(19823): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 12-14 05:30:07.679: W/Bundle(19823): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 12-14 05:30:07.679: W/Bundle(19823): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 12-14 05:30:07.679: W/Bundle(19823): at android.os.Handler.dispatchMessage(Handler.java:99) 12-14 05:30:07.679: W/Bundle(19823): at android.os.Looper.loop(Looper.java:130) 12-14 05:30:07.679: W/Bundle(19823): at android.app.ActivityThread.main(ActivityThread.java:3687) 12-14 05:30:07.679: W/Bundle(19823): at java.lang.reflect.Method.invokeNative(Native Method) 12-14 05:30:07.679: W/Bundle(19823): at java.lang.reflect.Method.invoke(Method.java:507) 12-14 05:30:07.679: W/Bundle(19823): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 12-14 05:30:07.679: W/Bundle(19823): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 12-14 05:30:07.679: W/Bundle(19823): at dalvik.system.NativeStart.main(Native Method) 12-14 05:30:07.679: W/dalvikvm(19823): threadid=1: thread exiting with uncaught exception (group=0x40018578) 

    Und die App stürzt mit einer Nullpunkt-Ausnahme ab

    Mein Auto Objekt ist paketierbar

    Also … was ist falsch

  • Android - Wie positioniere ich den Bildschirm?
  • Kann nicht auf WEB API mit ip: Port, aber kann mit localhost: Port während VS Debug-Modus
  • Kann nicht Lage und E-Mail mit Facebook API
  • CalendarView nimmt viel Zeit für die Anzeige
  • Wie bekomme ich den aktuellen Standort vom Netzbetreiber auf Android
  • Wie kann man mehrere Spannen auf einen TextView Text in denselben Teiltext setzen?
  • 4 Solutions collect form web for “Kann nicht benutzerdefinierte Objekt in einer Absicht passieren: Die Methode Put Extra ist zweideutig für den Typ Intent”

    Der erste Fehler: 'Die Methode Put Extra ist zweideutig für den Typ Intent'.

    Die Klasse Car ist sowohl Serializable als auch Parcelable , der Compiler weiß nicht, ob man putExtra(Serializable s) oder putExtra(Parcelable p) , um deine Anfrage zu bearbeiten. Also musst du dein Car bei einem Intent.putExtra() auf einen von ihnen Intent.putExtra() .

     Intent.putExtra("car", (Parcelable)myCarObject); Intent.putExtra("car", (Serializable)myCarObject); 

    Der zweite Fehler: java.lang.ClassCastException: java.util.ArrayList

    Sie setzen das Car Objekt in eine ArrayList und verwenden putExtra , um die nächste Aktivität zu senden. Eine ArrayList ist nicht Parcelable aber nur Serializable . Die putExtra(ArrayList) arbeitet als putExtra(Serializable) , aber du liest es von getParcelable() . Eine ArrayList kann nicht auf Parcelable .

    Ich benutze das

    Im Absender Activiy

     Intent intent = new Intent(activity, MyActivity.class); Bundle bundle = new Bundle(); bundle.putSerializable("my object", myObject); intent.putExtras(bundle); startActivity(intent); 

    Im Empfänger:

     myObject = (MyObject) getIntent().getExtras().getSerializable("my object"); 

    Funktioniert gut für mich versuchen es. Aber das Objekt muss serialisierbar sein 🙂

    Dies ist, wie ich meine Objekte, die serialisierbar sind, passieren, ich glaube, es sollte auf die gleiche Weise für paketierbar funktionieren. Bestehen:

     Intent intent=new Intent(OverviewActivity.this,CarDetailTabActivity.class); intent.putExtra("CAR",myCarObject); startActivity(intent); 

    Erhalten:

     Car carObject=(Car)getIntent().getSerializableExtra("CAR"); 

    Auto:

     import java.io.Serializable; public class Car implements Serializable { private static final long serialVersionUID = 1L; ...... 

    getIntent().getExtras() gibt extra Bundle aus deiner Absicht zurück, nicht deine Daten. Um deine Liste zu erhalten, bekommst du getIntent().getParcelableArrayListExtra("Car")

    Das Android ist ein Google Android Fan-Website, Alles über Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.