Почему bundle имеет методы getParcelableArrayList
, getParcelable
; но
Intent
имеет только метод putParcelableArrayListExtra
?
Могу ли я передать только object<T>
, а не ArrayList
одного элемента?
Тогда, что getParcelable
для?
Android: Как передать объект Parcelable в цель и использовать getParcelable метод bundle?
Ответ 1
Intent предоставляет кучу перегрузок методов putExtra().
Предположим, что у вас есть класс Foo, правильно реализующий Parcelable, чтобы поместить его в Intent в Activity:
Intent intent = new Intent(getBaseContext(), NextActivity.class);
Foo foo = new Foo();
intent.putExtra("foo ", foo);
startActivity(intent);
Чтобы получить это от намерения в другом действии:
Foo foo = getIntent().getExtras().getParcelable("foo");
Надеюсь, что это поможет.
Ответ 2
Parcelable p[] =getIntent().getParcelableArrayExtra("parcel");
Ответ 3
Сначала создайте 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";
Ответ 4
Важно помнить, что ваши модели должны реализовывать интерфейс Parcelable, а статический CREATOR. Этот случай предназначен для списков
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);
}
}