如何正确添加侦听器到片段

时间:2017-09-25 19:38:42

标签: java android android-fragments

我有两个片段(基本设置)和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?)。

感谢您抽出宝贵时间!

0 个答案:

没有答案