从ArrayAdapter中开始片段?

时间:2016-07-13 02:07:05

标签: android android-layout android-fragments android-activity

我需要一些帮助,了解如何从自定义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文件而不是适配器吗?

1 个答案:

答案 0 :(得分:1)

为您的上下文提供此值:

context = getActivity();

然后在适配器中使用它

((MainActivity)context).getSupportFragmentManager().beginTransaction()
                            .add(R.id.fragment_container, firstFragment).commit();

你应该没事。