Передача аргументов между фрагментами с использованием ViewPager - PullRequest
0 голосов
/ 10 марта 2019

У меня есть fragment с ListView кнопками.Каждая из этих кнопок при нажатии перейдет к другой fragment.Все эти кнопки перейдут к одному и тому же фрагменту, но я хочу настроить фрагмент в зависимости от того, какая кнопка была нажата.

Для просмотра списка я использую адаптер для отображения его содержимого.Я беру список Exercises и создаю кнопку для каждого упражнения.

public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    View exerciseItemView = convertView;
    if ( exerciseItemView == null ) {
        exerciseItemView = LayoutInflater.from( mContext ).inflate( R.layout.custom_exercise_card, parent, false );
    }

    final Exercise exercise = exerciseList.get( position );

    Button exerciseBtn = exerciseItemView.findViewById( R.id.exerciseStatBtn );
    exerciseBtn.setText( exercise.ExerciseName );

    exerciseBtn.setOnClickListener( new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ( (RecordStatsActivity) mContext ).setViewPager( 1 );
        }
    } );
    return exerciseItemView;
}

В своей деятельности я определяю ViewPager и его функции.

public class RecordStatsActivity extends BaseActivity {
    private static final String TAG = "RecordStatsActivity";
    public volatile Exercise currExercise;
    private SectionStatePagerAdapter mSectionStatePagerAdapter;
    private ViewPager mViewPager;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.activity_record_stats );
        mSectionStatePagerAdapter = new SectionStatePagerAdapter( getSupportFragmentManager() );
        mViewPager = findViewById( R.id.stats_container );
        setupViewPager( mViewPager );
    }

    private void setupViewPager(ViewPager viewPager) {
        SectionStatePagerAdapter adapter = new SectionStatePagerAdapter( getSupportFragmentManager() );
        adapter.addFragment( new StatMainFragment(), "StatMainFragment" );
        adapter.addFragment( new StatExerciseFragment(), "StatExerciseListFragment" );
        viewPager.setAdapter( adapter );
    }

    public void setViewPager(int fragmentId) {
        mViewPager.setCurrentItem( fragmentId );
    }

}

Есть лилюбой способ передать аргументы, используя ViewPager, чтобы сообщить фрагменту, какая кнопка была нажата.

Пример: допустим, я нажал кнопку с упражнением Squat.Тогда новый фрагмент может поменять EditText mTitle на «Присед» или что-то в этом роде.

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...