FragmentPagers 中的片段交互监听器
Fragment interaction listeners in FragmentPagers
我正在使用 FragmentPagerAdapter
和 android.support.v4.view.ViewPager
创建一个选项卡式应用程序。为了遵循最佳实践和关注点分离,我将我的应用程序分成几个不同的片段。每个片段都有一个需要 Activity
订阅的交互侦听器。由于我在整个应用程序中只有一个 activity,我是否必须让父级(选项卡式导航)activity 实现整个应用程序中的所有侦听器?这似乎是一种不好的做法,它会创建一个大型整体 Activity
class 来控制所有内容的流动。
我在用作主页选项卡的另一个片段中有三个片段。主页片段实现了三个子片段的接口。问题是主页片段不是 Activity
,因此子片段在 onAttach
.
上抛出异常
我错过了什么?如何在选项卡式应用程序中实现片段侦听器而不会使它们变得又大又乱 Activity
class
我想你需要一个与片段相关的好样本。这是一个带有详细解释的示例@ ViewPager with FragmentPagerAdapter。侦听器位于 片段 的 onCreateView
方法中。你不想在 Activity.
中设置一堆监听器
在进一步研究不同的关键字后,我在这里找到了一个很好的答案:
他们的关键是制作一个 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());
....
}
我正在使用 FragmentPagerAdapter
和 android.support.v4.view.ViewPager
创建一个选项卡式应用程序。为了遵循最佳实践和关注点分离,我将我的应用程序分成几个不同的片段。每个片段都有一个需要 Activity
订阅的交互侦听器。由于我在整个应用程序中只有一个 activity,我是否必须让父级(选项卡式导航)activity 实现整个应用程序中的所有侦听器?这似乎是一种不好的做法,它会创建一个大型整体 Activity
class 来控制所有内容的流动。
我在用作主页选项卡的另一个片段中有三个片段。主页片段实现了三个子片段的接口。问题是主页片段不是 Activity
,因此子片段在 onAttach
.
我错过了什么?如何在选项卡式应用程序中实现片段侦听器而不会使它们变得又大又乱 Activity
class
我想你需要一个与片段相关的好样本。这是一个带有详细解释的示例@ ViewPager with FragmentPagerAdapter。侦听器位于 片段 的 onCreateView
方法中。你不想在 Activity.
在进一步研究不同的关键字后,我在这里找到了一个很好的答案:
他们的关键是制作一个 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());
....
}