Представление фрагмента не будет отображаться после создания экземпляра фрагмента - PullRequest
0 голосов
/ 04 июня 2019

Фрагмент не отображает представление после обновления, но создается его экземпляр.

Я уже пытался сделать недействительным повторное присоединение представления, но работать не будет.

// В основном действии

mDashBoardBannerAdapter.addItems(bannersList);
mViewPager.setAdapter(mDashBoardBannerAdapter);
mViewPager.setPageTransformer(false, mCardShadowTransformer);
mViewPager.setPageMargin(70);
mViewPager.addOnPageChangeListener(this);

// Адаптер

public class DashBoardBannerAdapter extends FragmentStatePagerAdapter {

public static final String TAG = "DashBoardBannerAdapter";
public List<DashBoardResponse.Banners> bannersList;
public List<Fragment_Banner> mFragments = new ArrayList<>();
public DashBoardBannerAdapter(FragmentManager fm) {
    super(fm);
}

public void addItems(List<DashBoardResponse.Banners> bannersList) {
    this.bannersList=bannersList;
    Log.d(TAG, "addItems: fragment size before"+mFragments.size());
    mFragments.clear();
    Log.d(TAG, "addItems: fragment size after"+mFragments.size());
    for (int i = 0; i < bannersList.size(); i++)
    {
        Log.d(TAG, "addItems: "+i);

        Bundle bundle = new Bundle();
        bundle.putString("imageurl", bannersList.get(i).getImage());
        Fragment_Banner fragment_promotion=new Fragment_Banner();
        fragment_promotion.setArguments(bundle);
        mFragments.add(fragment_promotion);
    }
    notifyDataSetChanged();
}

@Override
public Fragment getItem(int position)
{
    return mFragments.get(position);
}

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

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

@Override
public void destroyItem(ViewGroup container, int position, Object object) 
{
    // TODO Auto-generated method stub
    super.destroyItem(container, position, object);

}
}

//Fragment
public class Fragment_Banner extends Fragment
{
  public static final String TAG = "Fragment_Banner";
  View view;
  ImageView ivOnboarderImage;
  String imageurl;
  public static Fragment_Banner newInstance() {
    Bundle args = new Bundle();
    Fragment_Banner fragment = new Fragment_Banner();
    fragment.setArguments(args);
    return fragment;
  }

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
Bundle savedInstanceState)
{
    view = inflater.inflate(R.layout.fragment_banner, container, false);
    imageurl = getArguments().getString("imageurl");
    ivOnboarderImage =view.findViewById(R.id.iv_image);
    ivOnboarderImage.setImageDrawable(null);
    ivOnboarderImage.setVisibility(View.VISIBLE);
    if (imageurl != null) {
        Picasso.Builder builder = new 
        Picasso.Builder(getActivity().getApplicationContext());
        builder.listener(new Picasso.Listener() {

            @Override
            public void onImageLoadFailed(Picasso picasso, Uri uri, 
             Exception exception) {
            }
        });
        Picasso pic = builder.build();
        pic.load(imageurl)
                .fit()
                .memoryPolicy(MemoryPolicy.NO_CACHE)
                .networkPolicy(NetworkPolicy.NO_CACHE)
                .placeholder(R.drawable.ic_launch)
                .error(R.drawable.ic_email)
                .into(ivOnboarderImage);

    }
    return view;
}

@Override
public void onDestroyView() {
    super.onDestroyView();
}}

При первом создании выход верен.Но при обновлении действия есть другие представления в действии, но не для баннера.Я делал логи, если фрагмент не конструируется, он тоже работает.Я пытался проверить Пикассо, он также работает нормально.Только вид не отображается после обновления.

...