getSupportFragmentManager()-类型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是未定义的

这个问题有简单的解决办法吗?

您有两个选项:

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

我希望这有帮助!

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

最新更新