我有一个片段:
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();
这解决了我一直遇到的问题,但是很高兴知道通过单独的类访问Fragment方法的更直接方法.
欢迎进一步解决该问题的答案,并将其作为解决方案.
解决方法:
HomeFragment.java
public class HomeFragment extends Fragment { private static HomeFragment instance; @Nullable @OverrIDe public VIEw onCreateVIEw(@NonNull LayoutInflater inflater, @Nullable VIEwGroup container, @Nullable Bundle savedInstanceState) { VIEw vIEw = inflater.inflate(R.layout.fragment_home, container, false); instance = this; return vIEw; } public static HomeFragment getInstance() { return instance; } public voID myMethod() { // do something... }}
AnotherClass.java
public Class AnotherClass() { // call this method HomeFragment.getInstance().myMethod();}
总结 以上是内存溢出为你收集整理的Java-Android,来自单独类的Access Fragment方法全部内容,希望文章能够帮你解决Java-Android,来自单独类的Access Fragment方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)