我有两个片段(基本设置)和FragmentPagerAdapter,用于TabLayout。
tabLayout.setupWithViewPager(myViewPagerWithAdapter);
My Adapter将一系列片段和标题作为参数(也是超级调用的FragmentManger)。
MyViewPagerAdapter adapter = new MyViewPagerAdapter(getSupportFragmentManager() ,fragments, titles);
My Fragments(实际上是2个)在他们的xml文件中有一个WebView。在片段外部使用WebViews(在片段内编码WebViews的控制有点奇怪,因为MainActivity主要涉及我的用户交互)。要知道片段中的WebViews何时被夸大,我添加了一个名为OnFragmentCreatedListener的简单接口,该接口在片段的public void onActivityCreated(Bundle savedInstanceState)
中触发。我通过以下方式添加了监听器:
private OnFragmentCreatedListener listener;
...
public void addOnFragmentCreatedListener(OnFragmentCreatedListener listener) {
this.listener = listener;
}
在我的MainActivity中,我添加了这样的监听器:
public class MainActivity extends AppCompatActivity implements OnFragmentCreatedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
...
MyFragment fragment = MyFragment.newInstance();
...
fragment.addOnFragmentCreatedListener(this);
...
}
@Override
public void onFragmentCreatedListener() {
// Do my stuff
}
现在,当屏幕旋转并重新启动活动时,片段中的侦听器保持为空(未初始化)。现在我不知道该怎么做,因为我不明白这种行为。代码应该像MainActivity的第一个protected void onCreate(Bundle savedInstanceState)
一样。它正在添加监听器,但它保持为空(如wtf?)。
感谢您抽出宝贵时间!