我需要了解ViewPager中Fragment的生命周期吗? 我有一个3个标签的ViewPager(3个碎片) 在它们之间滑动时的生命周期是什么?
我注意到当我从Fragment 3转到Fragment 1时,它正在刷新。那么在这个时刻召唤生命周期中的哪种方法?
我试图在每个方法中放入Toast,但我发现它们是相互调用的,所以我不知道哪个是负责刷新的。
我猜它是onActivityCreated(),但要调用它我必须通过Bundle saveInstancestate。当我传递null它崩溃,那么如何获得这个对象?
如果有其他/更好的方法,请分享。 我的目标是在单击操作栏中的按钮时刷新片段内的数据。
由于
答案 0 :(得分:1)
视图寻呼机片段始终在其两侧加载其邻居。
因此,您将看到片段在可见之前运行的创建回调。离片段2页后,它将被销毁。
让您的活动实施ViewPager.OnPageChangeListener
,然后使用onPageSelected
来调用您的片段。您可以在该活动中保留对视图页面片段的引用。
public class ViewPagerActivity implements ViewPager.OnPageChangeListener {
public void onCreate(Bundle savedInstanceState) {
...
if (savedInstanceState != null) {
//Restore the fragment's instance
mContent = getSupportFragmentManager().getFragment(savedInstanceState, "mContent");
...
}
...
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//Save the fragment's instance
getSupportFragmentManager().putFragment(outState, "mContent", mContent);
}
// regular activity stuff plus view pager methods
@Override
public void onPageSelected(int arg0) {
final ReadyFragment fragment = mAdapter.getItem(arg0);
if (fragment.isVisible()) {
fragment.ready(); //method inside your custom fragment code
}
}
}
添加接口类:
public interface ReadyInterface {
public void ready();
}
在片段中实现该接口:
public class ReadyFragment extends Fragment implements ReadyInterface {
//.. your regular fragment stuff
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
...
if (savedInstanceState != null) {
//Restore the fragment's state here
}
}
...
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//Save the fragment's state here
}
@Overide
public void ready() {
// do your stuff here that needs to happen
//once fragment is displayed and running
}
}
答案 1 :(得分:0)
在您的活动中,为视图寻呼机设置适配器后,将您的代码放在onPageSelected()方法中。每次更改或滑动viewPager时都会调用它。
heightForFooterInSection