android 从viewpager中删除一个fragment的方法?怎么解决 在线等

 我来答
匿名用户

2016-08-18
展开全部
为了解决彻底删除fragment,我们要做的是:
1.将FragmentPagerAdapter 替换成FragmentStatePagerAdapter,因为前者只要加载过,fragment中的视图就一直在内存中,在这个过程中无论你怎么刷新,清除都是无用的,直至程序退出; 后者 可以满足我们的需求。
2.我们可以重写Adapter的方法--getItemPosition(),让其返回PagerAdapter.POSITION_NONE即可。
[java] view plain copy
以下为引用内容:
@Override
public int getItemPosition(Object object) {
// TODO Auto-generated method stub
return PagerAdapter.POSITION_NONE;
}
我最后的代码:

[java] view plain copy
package com.yang.Adapter;

import java.util.ArrayList;

import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.PagerAdapter;

public class MyFragmentPagerAdapter extends FragmentStatePagerAdapter {
private static final String TAG = "MyFragmentPagerAdapter";
// private ArrayList<OpilistItem> lists;
private ArrayList<Fragment> mList;
private Context mContext;

public MyFragmentPagerAdapter(FragmentManager fm, Context context) {
super(fm);
this.mContext = context;
mList = new ArrayList<Fragment>();
}

public void setLists(ArrayList<Fragment> lists) {
this.mList = lists;
}

public void UpdateList(ArrayList<Fragment> arrayList) {
this.mList.clear();
this.mList.addAll(arrayList);

notifyDataSetChanged();
}

@Override
public Fragment getItem(int arg0) {
// Fragment ft = null;
//
// ft = new DateShow(mContext);
// for (int i = 0; i < lists.get(arg0).openplayitem.size(); i++) {
// Log.i(TAG,
// "arg0=" + arg0 + "name="
// + lists.get(arg0).openplayitem.get(i).moviename);
// }
//
// Bundle args = new Bundle();
// args.putSerializable("date_title", lists.get(arg0).openplayitem);
// ft.setArguments(args);
// return ft;
return mList.get(arg0);
}

@Override
public int getCount() {

return mList.size();
}

@Override
public int getItemPosition(Object object) {
// TODO Auto-generated method stub
return PagerAdapter.POSITION_NONE;
}
}

之前还有一个问题,就是在fragment中报空指针异常,是因为我要加载的动态加载的fragment只有一个,但是viewpager默认会去加载下一个,使得浏览流畅,从我注释的代码中可以看到,数据的传递是通过bundle,造成预加载的时候数据成空,造成空指针异常,解决的办法是在fragment的onCreateView方法中判断数据是否为空,然后再判断是不是生成并返回view。
微测检测5.10
2023-05-10 广告
您好!建议咨 深圳市微测检测有限公司,已建立起十余个专业实验室,企业通过微测检测就可以获得一站式的测试与认 证解决方案;(EMC、RF、MFi、BQB、QI、USB、安全、锂电池、快充、汽车电子EMC、汽车手机互 联、语音通话质量),认证遇... 点击进入详情页
本回答由微测检测5.10提供
手机用户99184
2016-08-16
知道答主
回答量:3
采纳率:0%
帮助的人:3197
展开全部
谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式