首先你不能施放Context
to a Fragment
as Fragment
不延伸Context
. Activity
确实延伸Context
这就是为什么当您从“活动”中执行此操作时,您正在尝试的操作会起作用。
我建议理想情况下,你的方法Common
班级应该完全不知道你的存在Fragment
。这样它们就不会“耦合”在一起。为了实现这一点,您可以使用回调接口。
创建一个interface
如下:
public interface Callback<T> {
onNext(T result);
}
然后你可以改变你的方法Common
至以下内容:
public void myfunction(Callback<Void> callback , String str){
//....//
callback.onNext(null);
}
然后当你调用该方法时Common
来自Fragment
你会这样做:
Common commonObj = new Common();
commonObj.myfunction(
new Callback<Void>() {
@Override
public void onNext(Void result) {
functionInFragment();
}
},
"Do you want to Update ?"
);
如果您需要将数据发送回函数,那么您可以更改回调的返回类型。例如,如果您想传回一个字符串,您可以使用Callback<String>
然后原始调用中的方法将如下所示:
new Callback<String>() {
@Override
public void onNext(String result) {
}
}
而在你的Common
你可以这样称呼它:
public void myfunction(Callback<String> callback , String str){
//....//
String result = "Hello from common";
callback.onNext(result);
}