我有一个片段(Fragment):
public class CustomFrag extends Fragment{
...
public void refreshList(){
...
}
}
我有一个单独的“类”:
public class SomeClass{
...
}
我正在尝试从SomeClass
调用refreshList()
:
String tagName = "android:switcher:" + R.id.pager + ":" + 1;
CustomFrag f2 = (CustomFrag)getActivity().getSupportFragmentManager().findFragmentByTag(tagName);
f2.refreshList();
但是这显示出了
无法解析方法 'getActivity'
。如果我在类中添加:extends Fragment
所有警告都消失了,但应用程序崩溃了,在
CustomFrag f2 = (CustomFrag)...
这一行出现了空指针异常。我有另一个片段,与
CustomFrag
相同的父对象中包含着该方法调用,工作得很好。如何从
SomeClass
访问CustomFrag
方法?这个问题(及类似问题)被广泛提出,但大多数问题没有被解决或者答案非常模糊,没什么帮助。谢谢您提前的帮助。
编辑:临时解决方案
我正在从两个上述片段中调用属于
SomeClass
的方法。我的解决方法如下:在
FragOne
中:public class FragOne extends Fragment{
...
String tagName = "android:switcher:" + R.id.pager + ":" + 1;
CustomFrag f2 = (CustomFrag)getActivity().getSupportFragmentManager().findFragmentByTag(tagName);
}
然后:
public class FragOne extends Fragment{
...
String tagName = "android:switcher:" + R.id.pager + ":" + 1;
CustomFrag f2 = (CustomFrag)getActivity().getSupportFragmentManager().findFragmentByTag(tagName);
SomeClass obj = new SomeClass(...);
obj.someMethod(f2);
}
someMethod
可以使用的地方如下:
f2.refreshList();
这解决了我一直遇到的问题,但仍然希望知道通过单独的类更直接地访问片段方法的方法。
欢迎提供进一步解决此问题的答案,并将其作为解决方案接受。