viewpager与图像工作,但在后退按钮图像不显示

时间:2014-06-10 23:30:59

标签: android android-fragments fragmentmanager

我有一个viewpager,其中的图像片段可以正常工作,但后面却收到错误消息,说没有空的构造函数。我做了一个,但现在我的图像没有显示,因为imageResourceId为null。我已经尝试了一百万件事,但无法弄明白。

public final class TestFragment extends Fragment {
String imageResourceId;

public TestFragment() {

}

public TestFragment(String cONTENT) {
    imageResourceId = cONTENT;
}

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

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

    ImageView image = new ImageView(getActivity());
    new DownloadImageTask((ImageView) image).execute(imageResourceId);
    LinearLayout layout = new LinearLayout(getActivity());

    layout.setGravity(Gravity.CENTER);
    layout.addView(image);

    return layout;

}

 }





class TestFragmentAdapter extends FragmentPagerAdapter implements
    IconPagerAdapter {

public String[] CONTENT;
private int mCount;
protected static final int[] ICONS = new int[] {
        R.drawable.perm_group_calendar, R.drawable.perm_group_camera,
        R.drawable.perm_group_device_alarms, R.drawable.perm_group_location };

public TestFragmentAdapter(FragmentManager fm, JSONArray photoData) {
    super(fm);

//  photoData = (JSONArray) userProfile.get("photos");

    CONTENT = new String[photoData.length()];

    mCount = photoData.length();
    for (int i = 0; i < photoData.length(); i++) {
        JSONObject mainPhoto;
        try {
            mainPhoto = photoData.getJSONObject(i);
            CONTENT[i] = mainPhoto.getString("src_big");
        } catch (JSONException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    }
    notifyDataSetChanged();

}

@Override
public Fragment getItem(int position) {
    return new TestFragment(CONTENT[position]);
}

@Override
public int getCount() {
    return mCount;
}

@Override
public int getIconResId(int index) {
    return ICONS[index % ICONS.length];
}

public void setCount(int count) {
    if (count > 0 && count <= 10) {
        mCount = count;
        notifyDataSetChanged();
    }
}
活动中的

                    mAdapter = new TestFragmentAdapter(
                    getSupportFragmentManager(), photoData);
                    mPager = (ViewPager) findViewById(R.id.pager);
                    mPager.setAdapter(mAdapter);

                    mIndicator = (LinePageIndicator) findViewById(R.id.indicator);
                    mIndicator.setViewPager(mPager);

1 个答案:

答案 0 :(得分:1)

Android使用片段的空构造函数在配置更改时恢复片段,这就是为什么你不能修改它,并且你不能覆盖它,因为你在eclipse中遇到错误。在对实例进行实例化时,将参数传递给片段的最佳做法是使用static factory method

public class TestFragment extends Fragment {

    String imageResourceId;

    public static TestFragment newInstance(String resource) {
        TestFragment f = new TestFragment();
        Bundle args = new Bundle();
        args.putString("Resource", resource);
        f.setArguments(args);
        return f;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        imageResourceId = getArguments().getString("Resource");
    }

}

要实例化它,请使用静态方法:

TestFragment fragment = TestFragment.newInstance("some string");