Pourquoi le bundle a des méthodes getParcelableArrayList
, getParcelable
mais
Intent
n'a que la méthode putParcelableArrayListExtra
Puis-je transmettre uniquement object<T>
, pas ArrayList
d'un élément ?
Alors, à quoi sert getParcelable
?
Réponses
Trop de publicités?Intent fournit un tas de méthodes de surcharge putExtra().
Supposons que vous ayez une classe Foo implémente Parcelable correctement, pour la mettre en intention dans une activité :
Intent intent = new Intent(getBaseContext(), NextActivity.class);
Foo foo = new Foo();
intent.putExtra("foo ", foo);
startActivity(intent);
Pour l'obtenir de l'intention dans une autre activité :
Foo foo = getIntent().getExtras().getParcelable("foo");
J'espère que cela t'aides.
Il est important de se rappeler que vos modèles doivent implémenter l' interface Parcelable et la méthode statique CREATOR. Ce cas est pour les listes
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);
}
}
Créez d'abord Parcelable en utilisant la technique donnée, puis
public static CreditCardDetail newInstance(CreditCardItemBO creditCardItem) {
CreditCardDetail fragment = new CreditCardDetail();
Bundle args = new Bundle();
args.putParcelable(CREDIT_KEY,creditCardItem);
fragment.setArguments(args);
return fragment;
}
Et l'obtenir comme
if(getArguments() != null)
{
creditCardItem = getArguments().getParcelable(CREDIT_KEY);
}
où
public static final String CREDIT_KEY = "creditKey";