Изменить экран после успешного входа?(Android студия) - PullRequest
0 голосов
/ 13 мая 2018

Во время стажировки мне было поручено взять чужой код и работать над проектом. У меня возникают трудности при попытке перейти на другой экран после успешного входа в систему. В настоящее время приведенный ниже код перенаправляет меня обратно на исходную главную страницу. страница меню после успешного входа в систему (при неудачном входе в систему ничего не происходит).

У меня вопрос, как отобразить всплывающее сообщение с неправильным именем пользователя / паролем?

В настоящее время он ничего не отображает во время неудачного входа в систему. Кроме того, как я могу изменить экраны с activity_login.xml на landing_page.xml после УСПЕШНОГО входа в систему? Какой код я должен добавить?

LoginActivity.java:

package com.finchvpn.androidcloudpark;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;
import java.util.Objects;

import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class LoginActivity extends AppCompatActivity {

    private EditText textUsername;
    private EditText txtPassword;
    private static RestClient restClient = new RestClient();

    private SharedPreferences.Editor sharedPreferencesEditor;

    @SuppressLint("CommitPrefEdits")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        try {
            Toolbar toolbar = findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
            Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setDisplayShowHomeEnabled(true);
        } catch (Exception e) {
        }

        textUsername = findViewById(R.id.textUsername);
        txtPassword = findViewById(R.id.textPassword);
        SharedPreferences sharedPreferences = getSharedPreferences("UserInfo", 0);
        sharedPreferencesEditor = sharedPreferences.edit();
        textUsername.setText(sharedPreferences.getString("textUsername", ""));
        txtPassword.setText(sharedPreferences.getString("txtPassword", ""));
    }

    public static RestClient getRestClient() {
        return restClient;
    }

    public void loginButtonClick(View v) {
        if (!textUsername.getText().toString().equals("") && !txtPassword.getText().toString().equals("")) {
            apiPostLogin(Constants.ANDROID_KEY + ":" + textUsername.getText().toString() + ":" + txtPassword.getText().toString());
            sharedPreferencesEditor.putString("textUsername", textUsername.getText().toString());
            sharedPreferencesEditor.putString("txtPassword", txtPassword.getText().toString());
            sharedPreferencesEditor.commit();
        } else {
            Toast.makeText(LoginActivity.this, "NULL", Toast.LENGTH_LONG).show();
        }
    }

    private void apiPostLogin(String data) {
        final ProgressDialog progress = new ProgressDialog(this);
        progress.setTitle("Logging in");
        progress.setMessage("Please wait ...");
        progress.setCancelable(false); // disable dismiss by tapping outside of the dialog
        progress.show();
        Call<ResponseBody> call = getRestClient().getLoginService().postLogin(data);
        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                if (response.isSuccessful() && response.body() != null) {
                    try {
                        String data = response.body().string();
                        JSONObject jsonObject = new JSONObject(data);
                        Constants.uid = Integer.parseInt(jsonObject.getString("id"));
                        Constants.username = jsonObject.getString("username");
                        Constants.email = jsonObject.getString("email");
                        Constants.credit = jsonObject.getString("credit");
                        Constants.qr_code = jsonObject.getString("qr_code");
                        Constants.created_at = jsonObject.getString("created_at");
                        Constants.updated_at = jsonObject.getString("updated_at");
                        Toast.makeText(LoginActivity.this, "apiPostLogin onResponse <<<< \r\n\r\n" + jsonObject.toString(), Toast.LENGTH_LONG).show();
                        Intent returnIntent = new Intent();
                        setResult(Activity.RESULT_CANCELED, returnIntent);
                        finish();
                    } catch (IOException | JSONException e) {
                        e.printStackTrace();
                    }
                }
                progress.dismiss();
            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {
                Toast.makeText(LoginActivity.this, "Incorrect username/password, please try again." + t.getMessage(), Toast.LENGTH_LONG).show();
                progress.dismiss();
            }
        });
    }
}

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

Если вы запускаете эту регистрационную активность, используя startActivityForResult, тогда обработайте ответ от метода onActivityResult в своей активности вызова.

И

setResult(Activity.RESULT_CANCELED, returnIntent);

это должно быть

setResult(Activity.RESULT_OK, returnIntent);
0 голосов
/ 13 мая 2018

Прежде всего, для изменения макета вашей активности вы должны изменить эту строку кода в методе onCreate:

setContentView(R.layout.activity_login);

Во-вторых, для отображения всплывающего окна в случае сбоя входа в систему измените метод apiPostLogin на:

 private void apiPostLogin(String data) {
    final ProgressDialog progress = new ProgressDialog(this);
    progress.setTitle("Logging in");
    progress.setMessage("Please wait ...");
    progress.setCancelable(false); // disable dismiss by tapping outside of the dialog
    progress.show();
    Call<ResponseBody> call = getRestClient().getLoginService().postLogin(data);
    call.enqueue(new Callback<ResponseBody>() {
        @Override
        public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
            if (response.isSuccessful() && response.body() != null) {
                try {
                    String data = response.body().string();
                    JSONObject jsonObject = new JSONObject(data);
                    Constants.uid = Integer.parseInt(jsonObject.getString("id"));
                    Constants.username = jsonObject.getString("username");
                    Constants.email = jsonObject.getString("email");
                    Constants.credit = jsonObject.getString("credit");
                    Constants.qr_code = jsonObject.getString("qr_code");
                    Constants.created_at = jsonObject.getString("created_at");
                    Constants.updated_at = jsonObject.getString("updated_at");
                    Toast.makeText(LoginActivity.this, "apiPostLogin onResponse <<<< \r\n\r\n" + jsonObject.toString(), Toast.LENGTH_LONG).show();
                    Intent returnIntent = new Intent();
                    setResult(Activity.RESULT_CANCELED, returnIntent);
                    finish();
                } catch (IOException | JSONException e) {
                    e.printStackTrace();
                }
            } else {
              //
              //
              //This scope runs where the login fails
            }
            progress.dismiss();
        }

        @Override
        public void onFailure(Call<ResponseBody> call, Throwable t) {
            Toast.makeText(LoginActivity.this, "Incorrect username/password, please try again." + t.getMessage(), Toast.LENGTH_LONG).show();
            progress.dismiss();
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...