【发布时间】:2017-10-31 02:51:19
【问题描述】:
立即了解活动和片段。我创建了一个超级简单的应用程序,它记录了正在显示的片段以及我看到它的次数。这就是事情变得奇怪的地方......
我的理解是,如果一个特定的 Fragment 可见,那么我在该 Fragment 中拥有的它自己的 logcat 应该会出现。但事实并非如此,它似乎记录了其他 Fragment 的 logcat 或什么都没有。
当我加载我的应用程序时,它会自动显示“tab1”和“tab2”会立即被记录。这让我很困惑,因为我不知道为什么会调用“tab2”,因为“tab1”是屏幕上唯一可见的片段。另外,为什么不记录“tab3”呢?当我向右滚动一次(到“tab2”)时,“tab3”被记录下来。当我滚动到“tab3”时,没有任何记录。当我回到“tab2”时,“tab1”被记录下来......在片段之间来回移动,我再也看不到“tab2”再次出现在我的 logcat 中。此外,似乎我实际使用的任何 Fragment 都会调用相应的 logcat。
任何帮助解释这一点将不胜感激!
这是我的 MainActivity:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSectionsPageAdapter = new SectionsPageAdapater(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.viewContainer);
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
setupViewPager(mViewPager);
}
private void setupViewPager(ViewPager viewPager) {
SectionsPageAdapater adapter = new SectionsPageAdapater(getSupportFragmentManager());
adapter.addFragment(new Tab1(), "TAB1");
adapter.addFragment(new Tab2(), "TAB1");
adapter.addFragment(new Tab3(), "TAB1");
viewPager.setAdapter(adapter);
}
}
这是我的 Fragment1:
int number = 0;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_tab1,container,false);
number ++;
Log.i("tab 1", "number: " + number);
return view;
}
这是我的 Fragment2:
int number = 0;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_tab2,container,false);
number ++;
Log.i("tab 2", "number: " + number);
return view;
}
这是我的 Fragment3:
int number = 0;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_tab3,container,false);
number ++;
Log.i("tab 3", "number: " + number);
return view;
}
这是我的日志:
I/tab 1: number: 1
I/tab 2: number: 1
I/tab 3: number: 1
I/tab 1: number: 2
I/tab 3: number: 2
I/tab 1: number: 3
I/tab 3: number: 3
I/tab 3: number: 4
I/tab 3: number: 5
I/tab 1: number: 4
I/tab 3: number: 6
I/tab 1: number: 5
I/tab 3: number: 7
【问题讨论】:
标签: java android android-fragments android-fragmentactivity