gpt4 book ai didi

android - 带有图像的 viewpager 可以工作,但在后退按钮上图像不显示

转载 作者:行者123 更新时间:2023-11-30 02:51:04 24 4
gpt4 key购买 nike

我有一个带有图像 fragment 的 viewpager,它可以工作,但在后面收到一个错误,说没有空的构造函数。我制作了一个,但现在我的图像没有显示,因为 imageResourceId 为空。我已经尝试了一百万种方法,但无法弄清楚。

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();
}
}

在 Activity 中

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

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

最佳答案

Android 在配置更改时使用 fragment 的空构造函数来恢复 fragment ,这就是为什么你不能修改它,也不能覆盖它,因为你在 eclipse 中会出错。将参数传递给 fragment 的最佳做法是在实例化 fragment 时使用 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");

关于android - 带有图像的 viewpager 可以工作,但在后退按钮上图像不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24152474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com