¿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?
Android: ¿Cómo pasar el objeto Parcelable a la intención y usar el método de paquete getParcelable?
yital9
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);
}
}
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";