【发布时间】:2017-08-21 06:57:49
【问题描述】:
【问题讨论】:
-
在这里查看我的回答它会帮助你stackoverflow.com/a/34395229/4571925
【问题讨论】:
您可以在片段内覆盖此方法,如果此片段在屏幕前
,这将返回true @Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser){
//You can do inside this method
}
}
}
【讨论】:
您可以使用yourViewPager.setOffScreenPageLimit(value) 方法。但是预加载页面的最小值是1,所以至少1个页面总是会被缓存。
要将正确的数据设置到 viewPager 页面,您可以执行以下操作:
public class YourFragment extends Fragment{
static final String ARGUMENT_PAGE_NUMBER = "arg_page_number";
int pos;
static YourFragment newInstance(int page) {
YourFragment yourFragment = new YourFragment();
Bundle arguments = new Bundle();
arguments.putInt(ARGUMENT_PAGE_NUMBER, page);
yourFragment.setArguments(arguments);
//save fragment position
return yourFragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
pos = getArguments().getInt(ARGUMENT_PAGE_NUMBER);
//now you have position of this fragment
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View yourView = inflater.inflate(R.layout.your_fragment_layout, container, false);
//use position of the fragment you received in onCreate to set up your views
return yourView;
}
【讨论】: