Получить данные из окна просмотра в действии - PullRequest
0 голосов
/ 25 мая 2020

Я использую окно просмотра, чтобы показать некоторый текст редактирования

enter image description here

На картинке красный прямоугольник - это мой фрагмент, а синий - моя активность

в своей деятельности я реализую свой фрагмент следующим образом

myAtivity

@Override
protected void onCreate(Bundle savedInstanceState) {
... 
ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);

    CardFragmentPagerAdapter pagerAdapter = new CardFragmentPagerAdapter(getSupportFragmentManager(), dpToPixels(2, this));
    ShadowTransformer fragmentCardShadowTransformer = new ShadowTransformer(viewPager, pagerAdapter);
    fragmentCardShadowTransformer.enableScaling(true);

    viewPager.setAdapter(pagerAdapter);
    viewPager.setPageTransformer(false, fragmentCardShadowTransformer);
    viewPager.setOffscreenPageLimit(3);
    ...

CardFragmentPagerAdapter

public class CardFragmentPagerAdapter extends FragmentStatePagerAdapter implements CardAdapter {

private List<CardFragment> fragments;
private float baseElevation;

public CardFragmentPagerAdapter(FragmentManager fm, float baseElevation) {
    super(fm);
    fragments = new ArrayList<>();
    this.baseElevation = baseElevation;

    for(int i = 0; i< 3; i++){
        addCardFragment(new CardFragment());
    }
}

@Override
public float getBaseElevation() {
    return baseElevation;
}

@Override
public CardView getCardViewAt(int position) {
    return fragments.get(position).getCardView();
}

@Override
public int getCount() {
    return fragments.size();
}

@Override
public Fragment getItem(int position) {
    return CardFragment.getInstance(position);
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
    Object fragment = super.instantiateItem(container, position);
    fragments.set(position, (CardFragment) fragment);
    return fragment;
}

public void addCardFragment(CardFragment fragment) {
    fragments.add(fragment);
}

}

И весь текст редактирования, который я использую в CardFragment стандартном фрагменте

, мой вопрос в том, как использовать данные текста редактирования фрагмента в моей деятельности

Я использую этот tutorai для выполнения этого просмотра https://rubensousa.github.io/2016/08/viewpagercards

1 Ответ

0 голосов
/ 25 мая 2020

Вы можете добиться этого с помощью обратного вызова интерфейса:

Добавьте этот новый интерфейс:

interface OnItemClickListener {
    void onItemClicked(int position);
}

В вашем фрагменте (ах):

private OnItemClickListener listener;

Также добавьте функция для установки этого слушателя:

public void setOnItemClickListener(OnItemClickListener listener) {
    this.listener = listener;
}

Наконец, в вашем Activity :

pagerAdapter.setOnItemClickListener(this);

реализуйте интерфейс в своей Activity:

class MyActivity extends --- implements OnItemClickListener

переопределить его метод:

void onItemClicked(int position) {
    //do what you want in your Activity
}

Заключительный шаг:

Установить Activity в качестве слушателя для фрагмента, когда вы создаете их экземпляр для своего ViewPager:

//this == getActivity()
MyFragment.newInstance(this)
...