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().

Другие вопросы по тегам