Я пытаюсь инициализировать глобальный ArrayList из слушателя (для работы с объектами JSONArray из библиотеки Volley в разных местах кода).Однако, когда я пытаюсь получить к нему доступ в методе Oncreate, он кажется неинициализированным.
Я пытался сделать то же самое с разными статическими и нестатическими переменными ig int [], String и т. Д., Но проблема, похоже,persist.
ПРИМЕЧАНИЕ. Класс Question используется для целей разработки приложений:
public class Question {
private String question;
private boolean answer;
public Question(String question, boolean answer){
this.question = question;
this.answer = answer;
}
public String getQuestion() {
return question;
}
public boolean isAnswer() {
return answer;
}
}
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private String url = "https://raw.githubusercontent.com/curiousily/simple-quiz/master/script/statements-data.json";
private static ArrayList<Question> questionArrayList = new ArrayList<>();
int [] intArr = new int[10];
String str = "Hello";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// calling the method where the variables are re-initialized
getQuestions();
// printing results after re-initialization
System.out.println("Mainactivity======================");
System.out.println("intArray: "+ intArr[0]);
System.out.println("STR: "+ str);
System.out.println(questionArrayList.get(0).getQuestion());
}
public void getQuestions(){
JsonArrayRequest arrayRequest = new JsonArrayRequest(Request.Method.GET, url, null,
new Response.Listener<JSONArray>() {
// Response Listener
@Override
public void onResponse(JSONArray response) {
// Test variables:
MainActivity.this.intArr[0] = 110;
str = "HI";
for(int i=0; i< response.length(); i++){
try {
// initializing ArrayList<Question>
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) {
}
});
RequestQueue queue = Volley.newRequestQueue(this);
queue.add(arrayRequest);
}
}
вывод:
I / System.out: Mainactivity ======================
I / System.out: intArray: 0
STR: Hello
D / AndroidRuntime: завершение работы VM E / AndroidRuntime: FATAL EXCEPTION: main Процесс: myapp.com.triviaapp, PID: 29167 java.lang.RuntimeException: Невозможно запустить действие ComponentInfo{myapp.com.triviaapp / myapp.com.triviaapp.MainActivity}: java.lang.IndexOutOfBoundsException: индекс: 0, размер: 0