Android实用方法— ViewPager + Fragment取消预加载以及Activity传值给Fragment

1、Activity传值给Fragment:

在fragment中写以下方法:

public static Article_Fg newInstance(String str) {
    Article_Fg fragment = new Article_Fg();
Bundle b = new Bundle();
b.putString("sort", str);
fragment.setArguments(b);
    return fragment;
}
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在activity中:

/*
 * 初始化ViewPager
 */
public void InitViewPager() {
fragmentList = new ArrayList<>();
Article_Fg fg1 = Article_Fg.newInstance("aa");
Article_Fg fg2 = Article_Fg.newInstance("1");
Article_Fg fg3 = Article_Fg.newInstance("2");
Article_Fg fg4 = Article_Fg.newInstance("3");
Article_Fg fg5 = Article_Fg.newInstance("4");
Article_Fg fg6 = Article_Fg.newInstance("5");

fragmentList.add(fg1);
fragmentList.add(fg2);
fragmentList.add(fg3);
fragmentList.add(fg4);
fragmentList.add(fg5);
fragmentList.add(fg6);

//给ViewPager设置适配器
vpArticle.setAdapter(new ArticleActivityAdapter(getSupportFragmentManager(), fragmentList));
vpArticle.setOffscreenPageLimit(1);
vpArticle.setCurrentItem(0);//设置当前显示标签页为第一页
vpArticle.setOnPageChangeListener(new MyOnPageChangeListener());//页面变化时的监听器
}
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

fragment 接收值:

Bundle bundle = getArguments();
if (bundle != null) {
SORT = bundle != null ? bundle.getString("sort") : defaultHello;
}
   
   
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

2、viewpager+fragment取消预加载:

写一个BaseFragment:

public abstract class BaseFragment extends Fragment {

/** Fragment当前状态是否可见 */
protected boolean isVisible;


@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);

        if(getUserVisibleHint()) {
isVisible = true;
onVisible();
} else {
isVisible = false;
onInvisible();
}
    }


/**
     * 可见
*/
protected void onVisible() {
        lazyLoad();
}


/**
     * 不可见
*/
protected void onInvisible() {


    }


/**
     * 延迟加载
* 子类必须重写此方法
*/
protected abstract void lazyLoad();
}
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

继承BaseFragment、Fragment中 的代码:

public  class Article_Fg extends BaseFragment implements Articlelist.LoadListener {

@Bind(R.id.list_fragment_article)
    Articlelist listFragmentArticle;
@Bind(R.id.sf_fragment_article)
    SwipeRefreshLayout sfFragmentArticle;

    private View view , header;
    private boolean results = false;
    private int ARTICLE_PAGER = 1 ,FIRST_IN = 1;
    private String SORT = "aa";
    private ArticleAdapter.VolleyOperateAdapter mAdapter;
    private RequestQueue queue;
    private List<ArticleListBean> list = new ArrayList<>();
    private String defaultHello = "default value";

/** 标志位,标志已经初始化完成 */
private boolean isPrepared;
/** 是否已被加载过一次,第二次就不再去请求数据了 */
private boolean mHasLoadedOnce;


    public static Article_Fg newInstance(String str) {
        Article_Fg fragment = new Article_Fg();
Bundle b = new Bundle();
b.putString("sort", str);
fragment.setArguments(b);
        return fragment;
}

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

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

if(view == null) {
view = inflater.inflate(R.layout.fragment_article, container, false);
//获得索引值
Bundle bundle = getArguments();
            if (bundle != null) {
SORT = bundle != null ? bundle.getString("sort") : defaultHello;
}
isPrepared = true;
lazyLoad();
}

//因为共用一个Fragment视图,所以当前这个视图已被加载到Activity中,必须先清除后再加入Activity
ViewGroup parent = (ViewGroup)view.getParent();
        if(parent != null) {
            parent.removeView(view);
}

        ButterKnife.bind(this, view);
queue = Volley.newRequestQueue(getContext());
        return view;
}


@Override
protected void lazyLoad() {
if (!isPrepared || !isVisible || mHasLoadedOnce) {
return;
}

new AsyncTask<Void, Void, Boolean>() {

@Override
protected void onPreExecute() {
super.onPreExecute();
//显示加载进度对话框
DialogUtil.showpdialog(getContext());
}

@Override
protected Boolean doInBackground(Void... params) {
try {
                    Thread.sleep(1000);

} catch (Exception e) {
                    e.printStackTrace();
}
return true;
}

@Override
protected void onPostExecute(Boolean isSuccess) {
if (isSuccess) {                  
               //在这里添加操作代码
mHasLoadedOnce = true;
initview();
isnettest();
init();
} else {
// 加载失败
}
//关闭对话框
DialogUtil.closedialog();
}
        }.execute();
}
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值