Android: Как передать Parcelable объект intent и использовать getParcelable метод bundle?
почему пакет getParcelableArrayList
,getParcelable
методами; но
Intent
только putParcelableArrayListExtra
способ?
Могу ли я передать только object<T>
, а не ArrayList
одного элемента?
Тогда что же такое getParcelable
для чего?
4 ответа:
намерение обеспечивает кучу перегрузки putExtra() методы.
Предположим, у вас есть класс Foo реализует Parcelable правильно, чтобы поместить его в намерение в действии:
Intent intent = new Intent(getBaseContext(), NextActivity.class); Foo foo = new Foo(); intent.putExtra("foo ", foo); startActivity(intent);
, чтобы получить его от намерения в другом упражнении:
Foo foo = getIntent().getExtras().getParcelable("foo");
надеюсь, что это помогает.
сначала создать Parcelable с помощью Данная Техника затем
public static CreditCardDetail newInstance(CreditCardItemBO creditCardItem) { CreditCardDetail fragment = new CreditCardDetail(); Bundle args = new Bundle(); args.putParcelable(CREDIT_KEY,creditCardItem); fragment.setArguments(args); return fragment; }
и получить его, как
if(getArguments() != null) { creditCardItem = getArguments().getParcelable(CREDIT_KEY); }
здесь
public static final String CREDIT_KEY = "creditKey";
важно помнить, что ваши модели должны реализовать Parcelable интерфейс, и статический!--4-->создатель метод. Этот случай для списков
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); } }