getSupportFragmentManager() - 未定义类型Context

时间:2014-09-21 20:49:43

标签: android android-fragments android-context

如何在实例化Fragment类时解决以下问题

holder.infoView.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) {
       Fragment infoFragment = new ExampleFragment();
                    infoFragment.show(context.getSupportFragmentManager(), "settings");

     ....

此代码所属的实际类(MySimpleArrayAdapter) - 扩展FragmentActivity - 采用上下文(通过构造函数) )来自另一个扩展该类的类。

所有相同的我都不能使用

这样的上下文
 infoFragment.show(context.getSupportFragmentManager(), "settings");

我收到错误:方法getSupportFragmentManager()未定义为Context类型。

这个问题有一个简单的解决方案吗?

2 个答案:

答案 0 :(得分:4)

您有两种选择:

  • 首先,您可以在FragmentActivity中调用getSupportFragmentManager(),将其另存为变量并将其作为第二个构造函数参数传递给您的适配器。
  • 当您确定Context Object始终从FragmentActivity类派生时,您可以将Context对象强制转换为FragmentActivity。然后你可以调用方法,比如((FragmentActivity) context).getSupportFragmentManager()

我希望有所帮助!

答案 1 :(得分:0)

我相信这个方法只为Activity类定义。此外,如果您决定将Activity实例传递给适配器,那不是一个好主意。考虑使用具有Observer模式的接口在Adapter和Activity之间进行通信。