在班级MyClass
中,
我有一个方法
public static void myMethod1(Context context, ClassA a, final ClassB.CompletedTaskListener completedListener) throws JSONException, SQLException {
我需要在同一个类的下面方法中访问上面的方法,
private static void myMethod2(final MyClass myclass) throws JSONException {
User currentUser = MainActivity.getUser();
final HashMap<String, Object> params = new HashMap<String, Object>();
params.put("username", myclass.getUsername());
params.put("data", CommonUtils.toJsonString(myclass.toMap()));
try {
HttpClientUtils.postSignedRequestWithCallback(URL, params,
APISignatureType.SIG_COMPLEX,
new HttpClientUtils.CustomCallbackListener() {
@Override
public void onSuccess(JSONObject jsonObject) {
myclass.setSaved(true);
myclass.setStatus(AppStatus.STATUS_SUBMITTED);
//Here I use the myMethod1 which shows error
myclass.myMethod1(context,user,completedOneDownloadTaskListener);
}
@Override
public void onFailure(int statusCode) {
}
});
}catch (Exception e){
}
}
当我在myMethod1(context,a,completedListener);
中使用myMethod2
时,我收到编译错误。
我收到错误,
Cannot resolve symbol 'completedListener'
Cannot resolve symbol 'a'
Non-static field 'context' cannot be referenced from a static context Static member 'com.mypack.model.MyClass.myMethod(android.content.Context, com.mypack.model.ClassA, com.mypack.service.ClassB.CompletedTaskListener)' accessed via instance reference
答案 0 :(得分:1)
context
不是静态值,而是对象。
从您的方法中移除static
修饰符,或者不在其中使用context
答案 1 :(得分:0)
作为对Bonatti答案的补充,我建议在method2
中添加其他参数,这样您仍然可以使用静态方法,因为不能通过实例引用访问上下文。
private static void myMethod2(final MyClass myclass, Context context) throws JSONException