我正在使用 FragmentPagerAdapter
和 android.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/