Не удается открыть новое действие по методу onResponse of Volley - PullRequest
1 голос
/ 22 апреля 2019

Я занимаюсь разработкой базового приложения для входа в 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, когда имя пользователя и пароль верны.

Ответы [ 2 ]

0 голосов
/ 22 апреля 2019

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

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

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

    Context context
    
  2. Начать подобное действие

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

0 голосов
/ 22 апреля 2019

Вам нужно вызвать 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();
                }
            }
...