setArguments() в Fragment и onCreate()
Если я создам новый Fragment
и затем я устанавливаю аргументы, могу ли я полагаться на эти аргументы, всегда доступные для меня в onCreate()
из Fragment
? Если да, то как они это делают? Если не так, как я должен общаться, если они не хотят, чтобы мы писали новые конструкторы?
2 ответа
Да, ваши аргументы доступны в методе onCreate. Пожалуйста, ознакомьтесь с этим ответом, чтобы узнать, как передавать аргументы во фрагменты: Как перенести некоторые данные в другой фрагмент?
Другой способ взаимодействия с фрагментом - через интерфейс, который реализует ваша деятельность, и вы передаете его как ссылку на ваш фрагмент в методе onAttach. Больше информации: https://developer.android.com/training/basics/fragments/communicating
Попробуйте таким способом любой фрагмент установить аргумент и получить аргумент..
// pass parameter to pass into bundle
public static NewMessageFragment newInstance(UserData userData) {
NewMessageFragment newMessageFragment = new NewMessageFragment();
Bundle bundle = new Bundle();
bundle.putParcelable(Constants.KEY_MESSAGE_USER_VO, userData);
newMessageFragment.setArguments(bundle);
return newMessageFragment;
}
// get value.
private void extractArguments() {
Bundle bundle = getArguments();
if (bundle != null) {
userData = bundle.getParcelable(Constants.KEY_MESSAGE_USER_VO);
}
}
Метод extractArguments() вызывается в метод onCreateView().