我是 Android 程序员迈出的第一步。在我的应用程序中,我决定使用 ViewPager (support.v4)。
我以非常典型的方式创建所有片段:
@Override
public void onCreate(Bundle savedInstanceState) {
(...)
//let's initialize view pager
List<Fragment> fragments = new ArrayList<Fragment>();
fragments.add(new MainActivitySelectDatabase());
fragments.add(new MainActivityDetails());
mainActivityPageAdapter = new MainActivityPageAdapter(getSupportFragmentManager(), fragments);
mainActivityViewPager = (ViewPager) findViewById(R.id.main_activity_view_pager);
mainActivityViewPager.setAdapter(mainActivityPageAdapter);
(...)
}
接下来我想通过以下方式通知所有片段关于一个事件:
protected void informAllFragmentsWhenDatabaseStatusChanged () {
for (int i=0; i<mainActivityPageAdapter.getCount(); i++) {
((InterfaceMainDatabaseStatusChanged) mainActivityPageAdapter.getItem(i)).onMainDatabaseStatusChanged();
}
}
如果我不改变屏幕方向,一切似乎都正常。当我改变它时,一切都变得疯狂。Fragment 中的 getActivity 或 getApplication 等方法返回 null。我猜由于未知原因,该方法是针对旧版本的片段执行的,而不是针对新版本的。应该如何解决?如何列出主要活动中所有片段的当前版本?
提前感谢您的帮助。