Java 截击请求上的表达式预期错误

Java 截击请求上的表达式预期错误,java,android,android-volley,android-context,Java,Android,Android Volley,Android Context,我在这一行的括号内得到一个名为expression expected的错误截取.newRequestQueue(MainActivity)。这门课是在我的主要活动之外的另一个活动上。以下是我的代码片段: public void youFunctionForVolleyRequest(final ServerCallbackJava callback) { RequestQueue queue = Volley.newRequestQueue(MainActivity);

我在这一行的括号内得到一个名为expression expected的错误<代码>截取.newRequestQueue(MainActivity)。这门课是在我的主要活动之外的另一个活动上。以下是我的代码片段:

    public void youFunctionForVolleyRequest(final ServerCallbackJava callback) {

    RequestQueue queue = Volley.newRequestQueue(MainActivity);

    String url = "https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&origins=22.2913,113.947&destinations=WanChai&mode=driving&key="REMOVED";

    JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
            url, null, new Response.Listener<JSONObject>()
            {

                @Override
                public void onResponse(JSONObject response) {
                    callback.onSuccess(response); // call call back function here

                }
            }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            //VolleyLog.d("Volley error json object ", "Error: " + error.getMessage());
        }
    })

    {
        @Override
        public String getBodyContentType ()
        {
            return "application/json";
        }
    };
    // Adding request to request queue
    queue.add(jsonObjReq);
}
}
public void youFunctionForVolleyRequest(最终服务器回调Java回调){
RequestQueue=Volley.newRequestQueue(MainActivity);
字符串url=”https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&origins=22.2913,113.947&destinations=湾仔&mode=驾驶&key=“已删除”;
JsonObjectRequest JSONObjectReq=新的JsonObjectRequest(Request.Method.POST,
url,null,新响应。侦听器()
{
@凌驾
公共void onResponse(JSONObject响应){
callback.onSuccess(response);//此处为callback函数
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
//d(“截击错误json对象”,“错误:+error.getMessage());
}
})
{
@凌驾
公共字符串getBodyContentType()
{
返回“application/json”;
}
};
//将请求添加到请求队列
add(jsonObjReq);
}
}

在类截击请求中生成全局变量

Context context; 
并在构造函数上初始化它

public VolleyRequests(Context mcontext) { this.context= mcontext; }
那就用这个

RequestQueue queue = Volley.newRequestQueue(context);
在MainActivity中调用时,请使用:

VolleyRequests volleyrequests = new VolleyRequests (this);

如果您的代码位于
活动.class

RequestQueue queue=Volley.newRequestQueue(this);//或
RequestQueue=Volley.newRequestQueue(Activity.this);//或
RequestQueue=Volley.newRequestQueue(getApplicationContext());

如果您的代码位于
Fragment.class

RequestQueue queue=Volley.newRequestQueue(getContext());//或
RequestQueue=Volley.newRequestQueue(getApplicationContext());//或
RequestQueue=Volley.newRequestQueue(Fragment.this.getContext());//或

RequestQueue queue=Volley.newRequestQueue(Fragment.this.getApplicationContext());

在活动/片段中创建了一个类,调用该类时,必须将活动的上下文和相同的传递传递给此函数,并替换RequestQueue=Volley.newRequestQueue(MainActivity)使用RequestQueue queue=Volley.newRequestQueue(mContext);类中声明的上下文。

您可以借助以下代码片段完成此操作:

public class Main2Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        Button button = (Button)findViewById(R.id.btn);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                request r = new request(Main2Activity.this);
                r.youFunctionForVolleyRequest();
            }
        });
    }

   class request{

       Context ctx;
       public request(Context mContext) {
           ctx = mContext;
       }

       public void youFunctionForVolleyRequest() {

        RequestQueue queue = Volley.newRequestQueue(ctx);

        String url = "https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&origins=22.2913,113.947&destinations=WanChai&mode=driving&key=";

        JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
                url, null, new Response.Listener<JSONObject>()
        {

            @Override
            public void onResponse(JSONObject response) {
               // callback.onSuccess(response); // call call back function here
                System.out.println("success");
            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                //VolleyLog.d("Volley error json object ", "Error: " + error.getMessage());
                System.out.println("failed");
            }
        })

        {
            @Override
            public String getBodyContentType ()
            {
                return "application/json";
            }
        };
        // Adding request to request queue
        queue.add(jsonObjReq);
    }

   }
}
公共类Main2活动扩展了AppCompative活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
按钮按钮=(按钮)findViewById(R.id.btn);
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
请求r=新请求(Main2Activity.this);
r、 youFunctionForVolleyRequest();
}
});
}
类请求{
上下文ctx;
公共请求(上下文mContext){
ctx=mContext;
}
public void youFunctionForVolleyRequest(){
RequestQueue=Volley.newRequestQueue(ctx);
字符串url=”https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&origins=22.2913,113.947&目的地=湾仔&模式=驾驶&钥匙=“;
JsonObjectRequest JSONObjectReq=新的JsonObjectRequest(Request.Method.POST,
url,null,新响应。侦听器()
{
@凌驾
公共void onResponse(JSONObject响应){
//callback.onSuccess(response);//此处为callback函数
System.out.println(“成功”);
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
//d(“截击错误json对象”,“错误:+error.getMessage());
System.out.println(“失败”);
}
})
{
@凌驾
公共字符串getBodyContentType()
{
返回“application/json”;
}
};
//将请求添加到请求队列
add(jsonObjReq);
}
}
}

在新类构造函数中,传递上下文,以便在截取时使用它

public class ClassWithVolley{
private Context context;
public ClassWithVolley(Context context){
this.context = context;
}
// continue

不工作。表示“无法解析方法
getApplicationContext()
”请尝试RequestQueue=Volley.newRequestQueue(this);在类VolleyRequests上下文中生成全局变量;并在构造函数公共VolleyRequests(Context mcontext){this.Context=mcontext;},然后使用此RequestQueue queue=Volley.newRequestQueue(上下文);当您在MainActivity中调用它时,请使用:VolleyRequests VolleyRequests=new VolleyRequests(此)我的答案被更新了它位于哪个类中?我创建了另一个名为VolleyRequests的类,上面的函数在这个类中,因此VolleyRequests不是android应用程序的活动。因此它没有不能调用this或getApplicationContext()的上下文对于上下文。因为上下文只存在于从AppCompat或AppCompatActivity扩展而来的活动类中。因此,您必须在自定义类中创建一个setter,以从您的活动或片段设置上下文。这就是我要解释的。干得好@ysl