Я искал в Интернете час и создал собственные представления для viewPager. Все решения, которые я видел, были для фрагментов. Мой вопрос в том, как с помощью оператора if проверить, видна ли моя страница. Я хочу сделать это по одной причине. У меня есть определенные виды, которые лежат поверх экрана камеры, и я хочу сохранить каждое изображение в зависимости от вида. Например: если используется объект одежды «TOPS» и «tops_view», я хочу сохранить его в папке «tops» в android. Я уже знаю, как сохранять в разные папки, поэтому хочу сделать операторы if в моем файле cameraAPI. Оператор if - это псевдокод того, чего я хочу достичь:
if (ClothesPagerView == TOPS)
final File file = new File(Environment.getExternalStorageDirectory() + "/OutfitMatcher/tops/img" + System.currentTimeMillis () +".jpg");
else if (ClothesPagerView == BOTTOMS)
final File file = new File(Environment.getExternalStorageDirectory() + "/OutfitMatcher/bottoms/img" + System.currentTimeMillis () +".jpg");CustomPagerAdapater.java
public class CustomPagerAdapter1 extends PagerAdapter{
private Context mContext;
public CustomPagerAdapter1(Context context) {
mContext = context;
}
@Override
public Object instantiateItem(ViewGroup collection, int position) {
ClothesObject clothesObject = ClothesObject.values()[position];
LayoutInflater inflater = LayoutInflater.from(mContext);
ViewGroup layout = (ViewGroup) inflater.inflate(clothesObject.getLayoutResId(), collection, false);
collection.addView(layout);
return layout;
}
@Override
public void destroyItem(ViewGroup collection, int position, Object view) {
collection.removeView((View) view);
}
@Override
public int getCount() {
return ClothesObject.values().length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public CharSequence getPageTitle(int position) {
ClothesObject customPagerEnum = ClothesObject.values()[position];
return mContext.getString(customPagerEnum.getTitleResId());
}
}ClothesObject.jaca (который я использую с адаптером)
public enum ClothesObject {
TOPS(R.string.tops_camera, R.layout.tops_view),
BOTTOMS(R.string.bottoms_camera, R.layout.bottoms_view),
ACCESSORIES(R.string.accessories_camera, R.layout.accessories_view),
SHOES(R.string.shoes_camera, R.layout.shoes_view),
OUTERWEAR(R.string.outerwear_camera, R.layout.outerwear_view),
DRESSES(R.string.dresses_camera, R.layout.dresses_view);
private int mTitleResId;
private int mLayoutResId;
ClothesObject(int titleResId, int layoutResId) {
mTitleResId = titleResId;
mLayoutResId = layoutResId;
}
public int getTitleResId() {
return mTitleResId;
}
public int getLayoutResId() {
return mLayoutResId;
}
}


![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Для этого вам нужно использовать фрагмент с Viewpager. тогда вы можете использовать getUserVisibleHint() в своем фрагменте для проверки, активна ли страница или нет
т.е.
if (getUserVisibleHint()){
//Your fragment is visible
}else{
// Not visible
}
Сначала вам нужно изменить адаптер пейджера на FragmentPagerAdapter, а затем использовать фрагменты для создания представления. затем используйте getUserVisibleHint () для проверки того, что фрагмент виден или нет
Стирает ли это мои "просмотры" или мне придется их воссоздавать?
Нет, вы можете использовать ту же логику и во фрагменте
getUserVisibleHint имеет красный цвет с надписью «невозможно разрешить метод»