三个标签同时启动
Three tabs launching at once
我在我的应用程序中将 ViewPager 与 TabLayout 和片段一起使用。我想让我的应用程序在用户看到时启动片段 activity,但应用程序一次加载 3 个片段。这意味着如果我有 3 个选项卡并且用户实际上在中间片段上,左右片段都已经在 CreateView 上启动。当片段显示在屏幕上而不是在显示的片段旁边时,有什么方法可以让应用程序做某事吗?
您可以通过将此代码段添加到您的 viewpager 中显示的片段来处理此问题:
private int mViewState = 0;
@Override
public void onPause() {
super.onPause();
setViewState(mViewState & ~1);
}
@Override
public void onResume() {
super.onResume();
setViewState(mViewState | 1);
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
setViewState(mViewState);
}
private void setViewState(int newState) {
newState = getUserVisibleHint() ? newState | 2 : newState & ~2;
if (newState == 3 && mViewState != 3){
// I'm visible
}else if (newState != 3 && mViewState == 3) {
// I'm hidden
}
mViewState = newState;
}
我在我的应用程序中将 ViewPager 与 TabLayout 和片段一起使用。我想让我的应用程序在用户看到时启动片段 activity,但应用程序一次加载 3 个片段。这意味着如果我有 3 个选项卡并且用户实际上在中间片段上,左右片段都已经在 CreateView 上启动。当片段显示在屏幕上而不是在显示的片段旁边时,有什么方法可以让应用程序做某事吗?
您可以通过将此代码段添加到您的 viewpager 中显示的片段来处理此问题:
private int mViewState = 0;
@Override
public void onPause() {
super.onPause();
setViewState(mViewState & ~1);
}
@Override
public void onResume() {
super.onResume();
setViewState(mViewState | 1);
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
setViewState(mViewState);
}
private void setViewState(int newState) {
newState = getUserVisibleHint() ? newState | 2 : newState & ~2;
if (newState == 3 && mViewState != 3){
// I'm visible
}else if (newState != 3 && mViewState == 3) {
// I'm hidden
}
mViewState = newState;
}