75 votes

Android : Comment passer l'objet Parcelable à l'intention et utiliser la méthode getParcelable du bundle ?

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 ?

172voto

yorkw Points 24676

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.

1voto

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

0voto

Sohail Pathan Points 83

Activité de l'expéditeur :

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

Activité du récepteur :

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

-1voto

chry Points 214

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);
        }
    }

-1voto

Nepster Points 893

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);               
 }

 public static final String CREDIT_KEY = "creditKey";

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X