android - FragmentPagers 中的 fragment 交互监听器

标签 android android-fragments android-activity android-viewpager fragmentpageradapter

我正在使用 FragmentPagerAdapterandroid.support.v4.view.ViewPager 创建一个选项卡式应用程序。为了遵循最佳实践和关注点分离,我将我的应用程序分成几个不同的 fragment 。每个 fragment 都有一个需要订阅 Activity 的交互监听器。由于我在整个应用程序中只有一个 Activity ,我是否必须让父(选项卡式导航) Activity 实现整个应用程序中的所有监听器?这似乎是一种不好的做法,创建一个大型整体 Activity 类来控制所有内容的流动。

我在用作主页选项卡的另一个 fragment 中有三个 fragment 。主页 fragment 实现了三个子 fragment 的接口(interface)。问题是主页 fragment 不是 Activity,因此子 fragment 在 onAttach 上抛出异常。

我错过了什么?如何在选项卡式应用程序中实现 fragment 监听器而不创建一个大而杂乱的 Activity

最佳答案

在使用不同的关键字进一步研究后,我在这里找到了一个很好的答案:https://stackoverflow.com/a/23144683/2435006

他们的关键是创建一个 onAttachFragment(Fragment f) 方法,而不是使用 onAttach(Activity a) 并在 onCreate 中调用它> 方法。

这是上面答案的例子:

public void onAttachFragment(Fragment fragment)
{
    try
    {
        mListener = (OnInteractionListener) fragment;

    } catch (ClassCastException e)
    {
          throw new ClassCastException(fragment.toString() + " must implement OnInteractionListener");
    }
 }


 @Override
 public void onCreate(Bundle savedInstanceState)
 {
    Log.i(TAG, "onCreate");
    super.onCreate(savedInstanceState);

    this.mContext = getActivity().getApplicationContext();
    onAttachFragment(getParentFragment());
    ....
 }

关于android - FragmentPagers 中的 fragment 交互监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30313651/

相关文章:

android - 具有对外部类的 WeakReference 的静态内部类如何避免 Android 内存泄漏?需要一个例子

Android FragmentStatePagerAdapter

java - 如何为另一个 Activity 保存一个 int ?

android - 退出 Android 应用程序按钮 - 真的

Android Facebook-SDK

java - 如何将图标添加到玻璃选项菜单项?

android - FragmentPagerAdapter 仅存在于 Android.Support.V4.App(而不是 Android.App)中

Android 确定单击哪个按钮来启动 Activity

java - 方向改变时如何处理服务

android - Fragments 如何处理触摸?