Android: come passare all’object Parcelable e utilizzare il metodo getParcelable del bundle?

Perché bundle ha getParcelableArrayList , metodi getParcelable ; ma Intent ha solo putParcelableArrayListExtra metodo putParcelableArrayListExtra ? Posso trasmettere solo l’ object , non ArrayList di un elemento? Allora, a cosa serve getParcelable ?

Intent fornisce una serie di metodi putExtra () di overloading.

Supponiamo che tu abbia una class Foo implementa Parcelable correttamente, per metterla in Intento in un’attività:

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

Per ottenerlo dall’intenzione in un’altra attività:

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

Spero che questo ti aiuti.

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

Per prima cosa crea Parcelable usando Data Technique allora

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

E come ottenerlo

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

dove

 public static final String CREDIT_KEY = "creditKey"; 

È importante ricordare che i tuoi modelli devono implementare l’interfaccia Parcelable e il metodo statico CREATOR . Questo caso è per le liste

  private static final String MODEL_LIST = "MODEL_LIST"; public MainFragment() {} public static MainFragment newInstance(ArrayList 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 models = getArguments().getParcelableArrayList(MODEL_LIST); } }