从同一个类中的另一个方法访问一个方法 - android

时间:2015-10-12 23:28:08

标签: java android

在班级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

2 个答案:

答案 0 :(得分:1)

context不是静态值,而是对象。

从您的方法中移除static修饰符,或者不在其中使用context

答案 1 :(得分:0)

作为对Bonatti答案的补充,我建议在method2中添加其他参数,这样您仍然可以使用静态方法,因为不能通过实例引用访问上下文。

private static void myMethod2(final MyClass myclass, Context context) throws JSONException