2012-07-31 21 views

Respuesta

7

Puede declarar una variable estática en otra actividad, o alguna Variable global en la clase Application, luego acceder a cualquier actividad, como si desea analizar algún objeto de tipo NewType, a Class NewActivity, desde OldActivity. Haga lo siguiente:

Declare un objeto de NewType estático en NewActivity.java.

public static NewObject newObject=null; 

hacer A continuación, cuando invoque NewActivity.

NewActivity.newObject=item; 
Intent intent=new Intent(OldActivity.this, NewActivity.class); 
startActivity(intent); 
+0

Hola, preferiría que la Actividad no llegue a una variable estática/el objeto de la aplicación. – kietdlam

+0

Si desea pasar un objeto a través de la intención, puede usar Bundle, pero para poner algún valor en el paquete, debe ser un objeto que se puede dividir en parciales, y si no lo tiene, debe hacerlo de otra forma, pasar el objeto y como Android ActivityManager, él mismo invoca el constructor de Actividad que usted, no puede pasar el parámetro en el constructor. No creo que haya otra manera. – jeet

+0

Esta no era la respuesta que estaba buscando, pero parece que es debido a que el marco no admite el comportamiento que estaba buscando. ¡Gracias! – kietdlam

1

Puede hacerlo en una de las siguientes maneras:

  • hacer que el objeto estático. (más fácil pero no siempre eficiente)
  • Serializar -> enviar -> recibir -> deserializar. También puede usar algo como JSON decoding and encoding, si su clase no es serializable. (Se refiere a una gran cantidad de exceso de cabeza, usted no desea utilizar esto, a menos que tenga una buena razón)
  • parcelable (más eficiente, más rápido)

He aquí un ejemplo de los documentos: puede envolver su Objeto con un parcelable, adjúntelo a un intento, y 'desenróllelo' en la actividad de recepción.

public class MyParcelable implements Parcelable { 
    private int mData; 

    public int describeContents() { 
     return 0; 
    } 

    public void writeToParcel(Parcel out, int flags) { 
     out.writeInt(mData); 
    } 

    public static final Parcelable.Creator<MyParcelable> CREATOR 
      = new Parcelable.Creator<MyParcelable>() { 
     public MyParcelable createFromParcel(Parcel in) { 
      return new MyParcelable(in); 
     } 

     public MyParcelable[] newArray(int size) { 
      return new MyParcelable[size]; 
     } 
    }; 

    private MyParcelable(Parcel in) { 
     mData = in.readInt(); 
    } 
} 
-1

una de las soluciones:

Usted puede hacer una clase Singleton para llevar la información que desea

por ejemplo:

StorageManager.getInstance().saveSomething(Object obj); 

entonces recuperar de nuevo con el respectivo método getter

Asegúrate de ocuparte de los problemas de sincronización;)

Cuestiones relacionadas