视图寻呼机片段始终加载其邻居在任何一方。
正因为如此,您将看到碎片在可见之前运行的创建回调。离开一个碎片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
}
}
Pager适配器的'getItem'方法是否创建片段的新实例? –
它什么都不做 – kerollos
你什么意思不做什么?它必须返回一个视图或片段(可能是您的案例中的片段)。 –