Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当一个类已经有一个要指定的参数时,如何在一个方法中实现它?_Java_Android_Android Studio_Android Volley - Fatal编程技术网

Java 当一个类已经有一个要指定的参数时,如何在一个方法中实现它?

Java 当一个类已经有一个要指定的参数时,如何在一个方法中实现它?,java,android,android-studio,android-volley,Java,Android,Android Studio,Android Volley,因此,我正在遵循我的Android Studio教程,并制作一个琐事应用程序。这就是交易: 下面是一个文件QuestionBank.java: package com.example.triviaapp.data; import android.content.Context; import android.util.Log; import com.android.volley.Request; import com.android.volley.RequestQueue; import c

因此,我正在遵循我的Android Studio教程,并制作一个琐事应用程序。这就是交易: 下面是一个文件QuestionBank.java:

package com.example.triviaapp.data;

import android.content.Context;
import android.util.Log;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.Volley;
import com.example.triviaapp.controller.AppController;
import com.example.triviaapp.models.Question;

import org.json.JSONArray;
import org.json.JSONException;

import java.util.ArrayList;
import java.util.List;

import static android.content.ContentValues.TAG;

public class QuestionBank {

    ArrayList<Question> questionArrayList = new ArrayList<>();

    private String url = "https://raw.githubusercontent.com/curiousily/simple-quiz/master/script/statements-data.json";


    public List<Question> getQuestions(Context context){
        JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(
                Request.Method.GET,
                url,
                (JSONArray) null,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        Log.d(TAG, "onResponse: " + response);
                        for (int i = 0; i >= response.length(); i ++){
                            try {
                                questionArrayList.add(new Question(response.getJSONArray(i).getString(0),response.getJSONArray(i).getBoolean(1)));
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {

                    }
                });
        AppController.getInstance(context).addToRequestQueue(jsonArrayRequest);
        return questionArrayList;
    }

}

package com.example.triviaapp.data;
导入android.content.Context;
导入android.util.Log;
导入com.android.volley.Request;
导入com.android.volley.RequestQueue;
导入com.android.volley.Response;
导入com.android.volley.VolleyError;
导入com.android.volley.toolbox.JsonArrayRequest;
导入com.android.volley.toolbox.volley;
导入com.example.triviaapp.controller.AppController;
导入com.example.triviaapp.models.Question;
导入org.json.JSONArray;
导入org.json.JSONException;
导入java.util.ArrayList;
导入java.util.List;
导入静态android.content.ContentValues.TAG;
公共类问题库{
ArrayList questionArrayList=新的ArrayList();
专用字符串url=”https://raw.githubusercontent.com/curiousily/simple-quiz/master/script/statements-data.json";
公共列表获取问题(上下文){
JsonArrayRequest JsonArrayRequest=新JsonArrayRequest(
Request.Method.GET,
网址,
(JSONArray)空,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
Log.d(标签“onResponse:”+响应);
对于(int i=0;i>=response.length();i++){
试一试{
添加(新问题(response.getJSONArray(i).getString(0),response.getJSONArray(i).getBoolean(1));
}捕获(JSONException e){
e、 printStackTrace();
}
}
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
}
});
AppController.getInstance(上下文).addToRequestQueue(jsonArrayRequest);
返回问题列表;
}
}
正如您所看到的,当我在主活动中调用它时,我需要提供上下文(这个)。 这条线

AppController.getInstance(上下文).addToRequestQueue(jsonArrayRequest)

是命中注定的

AppController.getInstance().addToRequestQueue(jsonArrayRequest)

正如老师所说,但是我有一个错误,getInstance需要上下文。感谢SO,我找到了解决方案,并进行了更改(AppController是singleton类btw)

因此,我需要在MainActivity运行时从中获取上下文,并且必须对此进行更改

公共列表问题(){

为此:

公共列表获取问题(上下文){

问题解决了!(但是老师没有任何错误,我不知道为什么。)

然后在稍后的视频中,他说我们需要getQuestions()来实现类最终应答ListAsyncResponse回调

所以我修改的行应该是这样的:

公共列表getQuestions(最终答案列表AsyncResponse回调){


而我的括号中已经有上下文。我该怎么办?

您可以将多个参数传递给一个函数

在您的情况下,您可以像这样传递上下文和回调

public List getQuestions(Context context, final AnswerListAsyncResponse callback){}

除了你在这里提出的问题之外,你应该,而不是实现。因此
ArrayList questionArrayList=new ArrayList();
变成
List questionArrayList=new arrarylist();
(另外,
questionList
会是一个更好的名字)