Android: ¿Cómo pasar el objeto Parcelable a la intención y usar el método de paquete getParcelable?

2 minutos de lectura

avatar de usuario
yital9

¿Por qué el paquete tiene getParcelableArrayList, getParcelable métodos; pero
Intent Sólo tiene putParcelableArrayListExtra ¿método? puedo transmitir solo object<T>no ArrayList de un elemento? Entonces, ¿qué es getParcelable ¿por?

avatar de usuario
yorkw

La intención proporciona un montón de sobrecarga ponerExtra() métodos.

Supongamos que tiene una clase Foo implementa Parcelable correctamente, para ponerlo en Intent en una actividad:

Intent intent = new Intent(getBaseContext(), NextActivity.class);
Foo foo = new Foo();
intent.putExtra("foo ", foo);
startActivity(intent);

Para obtenerlo de la intención en otra actividad:

Foo foo = getIntent().getExtras().getParcelable("foo");

Espero que esto ayude.

  • Obtengo java.lang.ClassCastException: xxx.CDetails no se puede enviar a android.os.Parcelable donde CDetails es un tipo de modelo personalizado con pares de clave y valor. intent.putExtra(“CDetails”, (Parcelable) tempCDetails);

    – usuario1872384

    24 de noviembre de 2018 a las 3:01


Parcelable p[] =getIntent().getParcelableArrayExtra("parcel");

  • Pregunto sobre getParcelable, ¿para qué?

    – yital9

    11 de abril de 2012 a las 14:08

  • devolverá una matriz de su objeto que ha pasado

    – MAC

    11 de abril de 2012 a las 14:09

  • lo siento, ¿sientes la diferencia entre getParcelableArrayExtra y getParcelable?

    – yital9

    11 de abril de 2012 a las 14:11

  • Por cierto, finalmente, ¿qué quieres pasar?

    – MAC

    11 de abril de 2012 a las 14:12

  • object < T > , T implementa Parcelable, solo un objeto, no matriz, no lista

    – yital9

    11 de abril de 2012 a las 14:15

Actividad del remitente:

val intent = Intent(this, RestaurantDetails::class.java)
        intent.putExtra(Constants.RESTAURANT, restaurant)
        startActivity(intent)

Actividad del receptor:

        val restaurant = intent.getParcelableExtra<Restaurant>(Constants.RESTAURANT)

Es importante recordar que sus modelos deben implementar el Parcelable interfaz y la estática CREADOR método. Este caso es para las listas.

 private static final String MODEL_LIST = "MODEL_LIST";
    public MainFragment() {}

    public static MainFragment newInstance(ArrayList<YourModel>   
models) {
        MainFragment fragment = new MainFragment();
        Bundle args = new Bundle();
        args.putParcelableArrayList(MODEL_LIST,models);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            ArrayList<YourModel> models = getArguments().getParcelableArrayList(MODEL_LIST);
        }
    }

avatar de usuario
Zar E Ahmer

Primero cree Parcelable usando Técnica dada luego

public static CreditCardDetail newInstance(CreditCardItemBO creditCardItem) {
        CreditCardDetail fragment = new CreditCardDetail();
        Bundle args = new Bundle();
        args.putParcelable(CREDIT_KEY,creditCardItem);
        fragment.setArguments(args);
        return fragment;
    }

Y conseguirlo como

 if(getArguments() != null)
 {
    creditCardItem = getArguments().getParcelable(CREDIT_KEY);               
 }

donde

public static final String CREDIT_KEY = "creditKey";

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad