Хорошо, я просмотрел весь веб-сайт в поисках возможного решения для отправки запроса POST с помощью Android, но, похоже, я не понимаю использование здесь Volley или метода, который запускал асинхронный поток для выполнения запроса.
private RequestQueue signupRequestQ = Volley.newRequestQueue(this);
@Override
public void onClick(View view) {
String postUrl = "https://mypost.url";
signupRequestQ.start();
switch (view.getId()) {
case R.id.signupBtn:
if (((EditText) findViewById(R.id.passwordSignup)).getText().toString().length() < 6) {
Dialog.showInvalidInputFieldsDialog(this,"Password must be longer than 5 characters").show();
} else {
try {
StringRequest strRequest = new StringRequest(Request.Method.POST, postUrl,
response -> {
System.out.println(response);
},
error -> {
System.out.println("What the funk");
}) {
@Override
protected Map<String, String> getParams() {
LinkedHashMap<String, String> postForm = new LinkedHashMap<String, String>();
postForm.put("test", "var");
return postForm;
}
};
signupRequestQ.add(strRequest);
} catch (ParseException e) {
System.out.println("Something went wrong");
}
}
}
По какой-то причине этот код вызывает сбой моего приложения с java.lang.RuntimeException и java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.File android.content.Context.getCacheDir()' on a null object reference.
Однако я не должен сталкиваться с исключением NullPointerException, поскольку в javadoc Volley RequestQueue четко указано, что мне нужно было только предоставить контекст для метода newRequestQueue, что я и сделал.
Может ли кто-нибудь помочь с моей проблемой? Спасибо!
Я вообще не называл getCacheDir() в коде. Всплывающая подсказка в Android Studio сообщила мне, что конструктор для очереди запросов взял только Context.
Возможный дубликат Что такое исключение NullPointerException и как его исправить?
Вы находитесь в верхней части Activity, когда вызываете Volley.newRequestQueue (this)?
@Bubu Я сделал это прямо на вершине класса
@ Сельвин, нет, проблема не в этом. Я использовал документацию Volley, и они не указали, что я должен предоставить каталог кеша, мне нужно было только предоставить контекст, что я и сделал. Не дубликат.




Это потому, что вы создаете экземпляр RequestQueue с нулевым контекстом в верхней части Activity:
private RequestQueue signupRequestQ = Volley.newRequestQueue(this); // "this" is null here
Попробуйте создать RequestQueue в методе onCreate() вашей Activity, например:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
signupRequestQ = Volley.newRequestQueue(this);
}
Сбой не вызван вашим кодом. Вы вызываете метод «getCacheDir ()» из нулевого контекста где-то еще. Если вам нужна помощь, опубликуйте код, в котором вызывается getCacheDir ().