安装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之间进行通信。