【发布时间】:2013-12-02 21:37:17
【问题描述】:
我有一个包含 5 个片段的 Activity(Form)。在我的第三个片段中,我有一个列表视图和一个图像按钮,用于从手机图库中获取图像并将其放入列表视图中。对于那件事我没有任何疑问。
此外,当我滑动到我的第二个和第四个片段并返回到我的第三个片段时,附加的图像会留在第三个片段列表视图中。
但是当我滑动到第 1 个和第 5 个片段并返回到我的第 3 个片段时,我的第 3 个片段列表视图上的图像附件消失了。可能是什么问题呢?这是我的代码:
片段3:
public class Fragment3 extends Fragment implements OnClickListener {
ListView lv;
ArrayList<Uri> array_list = new ArrayList<Uri>();
ArrayAdapter<Uri> array_adapter;
final int RQS_LOADIMAGE = 0;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.frag3, container, false);
ImageButton b = (ImageButton) v.findViewById(R.id.button_ai);
b.setOnClickListener(this);
array_adapter = new ArrayAdapter<Uri>(getActivity(), android.R.layout.simple_list_item_1, array_list);
lv = (ListView) v.findViewById(R.id.list_ai);
lv.setAdapter(array_adapter);
return v;
}
@Override
public void onClick(View arg0) {
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, RQS_LOADIMAGE);
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RQS_LOADIMAGE) {
if(resultCode == Form.RESULT_OK) {
Uri imageUri = data.getData();
array_list.add(imageUri);
array_adapter.notifyDataSetChanged();
}
}
}
}
ActivityForm:
public class Form extends FragmentActivity {
ViewPager viewPager = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_form);
viewPager = (ViewPager) findViewById(R.id.pager);
FragmentManager fragmentManager = getSupportFragmentManager();
viewPager.setAdapter(new MyAdapter(fragmentManager));
}
public class MyAdapter extends FragmentStatePagerAdapter {
public MyAdapter (FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
Fragment fragment = null;
if (i == 0)
{
fragment = new Fragment1();
}
if (i == 1)
{
fragment = new Fragment2();
}
if (i == 2)
{
fragment = new Fragment3();
}
if (i == 3)
{
fragment = new Fragment4();
}
if (i == 4)
{
fragment = new Fragment5();
}
return fragment;
}
@Override
public int getCount() {
return 5;
}
}
}
【问题讨论】:
-
我猜,代码没有问题。但是您需要在 backstack 中添加片段,以便获得片段 onBackPress 。 Here 就是一个例子。
-
活动代码可以帮助我们告诉您该做什么。
-
对不起。我现在已经发布了我的活动代码。
标签: android listview android-listview android-fragments