【问题标题】:ViewPager with SherlockFragment always empty带有 SherlockFragment 的 ViewPager 始终为空
【发布时间】:2013-05-16 19:56:03
【问题描述】:

目前我有一个包含 SherlockFragment 的选项卡主机活动。在这些选项卡之一(片段)中,我想实现一个将显示图像(ImageView)的 ViewPager。我创建了一个 FragmentPagerAdapter 和 Fragment 以将其添加到 ViewPager 中。但是当我运行应用程序时,我的 ViewPager 显示为空,其中没有图像。

这是我的课程:

BonusFragment.Java

public class BonusFragment extends SherlockFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    getImages(); //Here I get the images for the viewpager
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    if (container == null) {
        return null;
    }

    View view = inflater.inflate(R.layout.bonus_frag, container, false);
    viewPager = (ViewPager) view.findViewById(R.id.pagr);
    Q.ADAPTER = new BonusPagerAdapter(getActivity()
            .getSupportFragmentManager(), myImagesList);
    viewPager.setAdapter(Q.ADAPTER);

    return view;
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

}
}

BonusPagerAdapter.Java

private ArrayList<Bitmap> items;

public BonusPagerAdapter(FragmentManager fm, ArrayList<Bitmap> items) {
    super(fm);
    this.items = items;
}

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

@Override
public Fragment getItem(int position) {
    Bitmap bitmap = items.get(position);
    BonusImageFragment fragment = BonusImageFragment.newInstance("Glass 1");
    fragment.setBitmap(bitmap);

    return fragment;
}

@Override
public int getItemPosition(Object object) {
    return PagerAdapter.POSITION_NONE;
}

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

BonusImageFragment.Java

public class BonusImageFragment extends SherlockFragment {
private Bitmap bitmap;
public static final String EXTRA_MESSAGE = "EXTRA_MESSAGE";
private static String frag = "";

public BonusImageFragment() {
}

public static final BonusImageFragment newInstance(String message)

{

    frag = message;

    BonusImageFragment f = new BonusImageFragment();

    Bundle bdl = new Bundle(1);

    bdl.putString(EXTRA_MESSAGE, message);

    f.setArguments(bdl);

    return f;

}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.glass_item, container, false);
    ImageView image = (ImageView) v.findViewById(R.id.glass_view);
    image.setImageBitmap(bitmap);

    return v;
}

public Bitmap getBitmap() {
    return bitmap;
}

public void setBitmap(Bitmap bitmap) {
    this.bitmap = bitmap;
}

}

现在为什么我的 ViewPager 总是显示为空?

【问题讨论】:

  • 已修复...我不得不将“BonusFragment.Java”中的“getActivity().getSupportFragmentManager()”更改为“getChildFragmentManager()”

标签: java android android-fragments android-viewpager android-nested-fragment


【解决方案1】:

已修复...我必须将“BonusFragment.Java”中的“getActivity().getSupportFragmentManager()”更改为“getChildFragmentManager()”

【讨论】:

  • 嗨@Abuzaid。这对你有用吗?如果您切换选项卡,那么我的应用程序第二次因12-02 21:17:26.019: E/AndroidRuntime(32505): java.lang.IllegalStateException: No activity 异常而崩溃。
猜你喜欢
  • 1970-01-01
  • 2021-01-18
  • 2018-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-08
  • 1970-01-01
相关资源
最近更新 更多