Android FragmentPager中的片段交互侦听器
我正在使用Android FragmentPager中的片段交互侦听器,android,android-fragments,android-activity,android-viewpager,fragmentpageradapter,Android,Android Fragments,Android Activity,Android Viewpager,Fragmentpageradapter,我正在使用FragmentPagerAdapter和android.support.v4.view.ViewPager创建一个选项卡式应用程序。为了遵循最佳实践和关注点分离,我将我的应用程序分为几个不同的片段。每个片段都有一个交互侦听器,需要订阅活动。由于我在整个应用程序中只有一个活动,我是否必须使父(选项卡式导航)活动实现整个应用程序中的所有侦听器?这似乎是一种不好的做法,创建一个大型的单片活动类来控制一切的流程 我在另一个片段中有三个片段,我将其用作主页选项卡。主页片段实现了三个子片段的接口
FragmentPagerAdapter
和android.support.v4.view.ViewPager
创建一个选项卡式应用程序。为了遵循最佳实践和关注点分离,我将我的应用程序分为几个不同的片段。每个片段都有一个交互侦听器,需要订阅活动。由于我在整个应用程序中只有一个活动,我是否必须使父(选项卡式导航)活动实现整个应用程序中的所有侦听器?这似乎是一种不好的做法,创建一个大型的单片活动
类来控制一切的流程
我在另一个片段中有三个片段,我将其用作主页选项卡。主页片段实现了三个子片段的接口。问题是主页片段不是活动
,因此子片段在onAttach
上引发异常
我错过了什么?如何在选项卡式应用程序中实现片段侦听器而不创建一个大而混乱的活动
类我想您需要一个与片段相关的好示例。这是一个带有详细解释的示例@。侦听器位于onCreateView
方法的片段中。你不想在活动中设置一群听众在使用不同的关键字进行进一步研究后,我在这里找到了一个很好的答案:
他们的关键是创建一个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());
....
}
我在每个片段中都有与站点onCreateView
中片段相关的按钮点击监听器,但为了让它们彼此对话,它们需要实现一个交互监听器。片段的onClick处理程序调用交互侦听器中的方法,以便实现片段的活动可以跨片段执行逻辑。我希望实现两个子片段的片段能够处理跨片段逻辑(如果有意义的话?)@LukeP,在一个片段中包含子片段可能有意义,有些人已经这样做了。您还有另一个选项,即不包含任何子片段,而是显示/隐藏布局/按钮/列表视图或任何GUI对象。你会考虑吗?下一次,我建议组织这些问题,列出它们。我不知道这篇文章的主要问题或目标。