Не удается открыть новое действие по методу onResponse of Volley

1

Я занимаюсь разработкой базового приложения для входа в Android, я просмотрел и прочитал множество учебных пособий на YouTube, и теперь я запутался в своем коде (поскольку я не профессионал).

Когда я набираю неправильный пароль, приложение будет отображать сообщение, как и ожидалось, но оно ничего не показывает, когда я набираю правильный пароль в соответствии с моей записью в базе данных. Я понятия не имею, как это исправить.

Я попытался заменить код "Намерение"... другим тост-сообщением, чтобы увидеть, выйдет ли что-нибудь, когда я введу правильный пароль, но ничего не отображается даже для тост-сообщения.

                public void onResponse(String response) {
                    try {
                        JSONObject obj = new JSONObject(response);
                        if(!obj.getBoolean("error")){
                            SharedPrefManager.getInstance(getApplicationContext())
                                    .userLogin(
                                            obj.getString("username"),
                                            obj.getString("email")
                                    );

                            Intent intent = new Intent(getApplicationContext(), HomeActivity.class);
                            startActivity(intent);
                        }else{
                            Toast.makeText(
                                    getApplicationContext(),
                                    obj.getString("message"),
                                    Toast.LENGTH_LONG
                            ).show();
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }

Он должен запустить HomeActiviy, когда имя пользователя и пароль верны.

Теги:
android-volley

2 ответа

0

Проблема в вашем коде в getApplicationContext().

Попробуйте это решение

  1. В методе этого залпового запроса добавьте параметр контекста

    Context context
    
  2. Начните деятельность, как это

    Intent intent = new Intent(context, HomeActivity.class);
    context.startActivity(intent);
    
  3. Установите контекст как this когда вы вызываете свою функцию залпа

  • 0
    Ах, извините, я не совсем понимаю, что мне нужно сделать на шаге 3, не могли бы вы объяснить подробнее, большое спасибо.
  • 0
    Когда вы вызываете функцию запроса в своей деятельности, вы должны установить переменную контекста. Давайте предположим, что ваша подпись функции похожа на этот public void myRequest(Context context, String name, ......) . Так что в своей деятельности вы вызываете эту функцию, например, myRequest(this, "xxxxx", ....)
Показать ещё 1 комментарий
0

Вам нужно позвонить в startActivity из основного потока, я считаю...

          public void onResponse(String response) {
                try {
                    JSONObject obj = new JSONObject(response);
                    if(!obj.getBoolean("error")){
                        SharedPrefManager.getInstance(getApplicationContext())
                                .userLogin(
                                        obj.getString("username"),
                                        obj.getString("email")
                                );

                        myActivity.runOnUiThread(new Runnable() {
                           @Override
                           public void run() {
                           //Your code to run in GUI thread here
                           }//public void run() {
                              Intent intent = new Intent(getApplicationContext(), 
                              HomeActivity.class);
                              startActivity(intent)
                           });
                    }else{
                        Toast.makeText(
                                getApplicationContext(),
                                obj.getString("message"),
                                Toast.LENGTH_LONG
                        ).show();
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
  • 0
    Я думаю, что это не проблема, как вы можете прочитать в вопросе, который показывает тост, если пароль неправильный.
  • 0
    Я также пробовал это решение, но он сказал, что «Нестатический метод runOnUiThread нельзя ссылаться из статического контекста. Ага Android кажется мне немного сложным
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню