我需要一些帮助,了解如何从自定义ArrayAdapter中启动片段。我知道如何从我的活动中启动它,但在这种情况下,我需要在从我的自定义ArrayAdapter填充的视图上按下按钮时启动它。
我尝试了以下内容:
JobDescFragment firstFragment = new JobDescFragment();
((MainActivity) context).getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, firstFragment).commit();
而且这也是我写第一次尝试的漫长道路:
FragmentManager fragmentManager = ((MainActivity) context).getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
JobDescFragment fragment = new JobDescFragment();
fragmentTransaction.replace(R.id.fragment_container, fragment);
fragmentTransaction.commit();
当我运行我的应用程序并单击打开片段的按钮时,它崩溃并出现以下错误:
java.lang.ClassCastException: android.app.Application cannot be cast to com.lorentzos.swipecards.MainActivity
我猜这与我的活动背景有关吗?我不确定打开片段的正确方法是来自自定义ArrayAdapter。
提前致谢!
我设法解决了错误消息,我将应用程序上下文而不是活动上下文发送给我的适配器。
现在我的适配器可能正确添加但我仍然无法看到它。它没有打开。这是因为R.id.fragment_container是在活动的xml文件而不是适配器吗?
答案 0 :(得分:1)
为您的上下文提供此值:
context = getActivity();
然后在适配器中使用它
((MainActivity)context).getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, firstFragment).commit();
你应该没事。