版权声明:本文为博主原创文章,未经博主允许不得转载。
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