0
   package com.example.androidapp;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.android.material.textfield.TextInputEditText;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class Login extends AppCompatActivity  {

EditText  username, password;
Button btnLogin;




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


    username    = findViewById(R.id.editTextEmail);
    password = findViewById(R.id.editTextPassword);
    btnLogin      = findViewById(R.id.buttonLogin);

    btnLogin.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {

            if(TextUtils.isEmpty(username.getText().toString()) || TextUtils.isEmpty(password.getText().toString())){
                Toast.makeText(Login.this,"Username / Password Required", Toast.LENGTH_LONG).show();
            }else{
                //proceed to login
                login();
            }
        }
    });
}


    public void login(){
        LoginRequest loginRequest = new LoginRequest();
        loginRequest.setUsername(username.getText().toString());
        loginRequest.setPassword(password.getText().toString());

        Call<LoginResponse> loginResponseCall = ApiClient.getUserService().userLogin(loginRequest);
        loginResponseCall.enqueue(new Callback<LoginResponse>() {
            @Override

            public void onResponse(Call<LoginResponse> call, Response<LoginResponse> response) {

                Log.d("@sid","res"+response.code());

                if(response.isSuccessful()){
                    Toast.makeText(Login.this,"Login Successful", Toast.LENGTH_LONG).show();
                    final LoginResponse loginResponse = response.body();

                    new Handler().postDelayed(new Runnable() {

                        @Override
                        public void run() {

                            startActivity(new Intent(Login.this,Permission2.class).putExtra("data",loginResponse.getUsername()));
                        }
                    },700);
                }else{
                    Toast.makeText(Login.this,"Login Failed", Toast.LENGTH_LONG).show();
                }
            }

            @Override
            public void onFailure(Call<LoginResponse> call, Throwable t) {
                Toast.makeText(Login.this,"Throwable "+t.getLocalizedMessage(), Toast.LENGTH_LONG).show();
            }
        });
    }

}

每当我尝试为我的应用程序创建一个登录页面时,它显示登录失败并且它没有传递意图以及无法在我的应用程序的第二页上传递数据。我很无助,没有任何想法来解决这个问题。我请求您检查我上面的代码,如果我做错了什么,请告诉我。

4

1 回答 1

0

首先,请重新格式化粘贴的代码,使其更具可读性。

其次 - 您是否向 AndroidManifest 文件添加了 Internet 权限?

第三 - 您可以打印出要记录的错误,例如:

Log.d("LoginError", "${response.errorBody.string()}");

您是否也遵循过一些关于如何使用 Retrofit 的教程?也许按照一些简单的教程来了解如何解决这个问题:)

于 2020-06-16T08:29:48.680 回答