首页 > 解决方案 > Android 应用程序不会从登录或注册活动中进入下一个活动

问题描述

当我尝试通过在注册页面中按 sign_up 进入下一个活动或在用户已经存在时登录日志页面时,应用程序只是退出并出现错误。

注册活动 // 变量 final String TAG ="signUp"; 私有 MaterialEditText 编辑名称;私有 MaterialEditText 编辑密码;

//DECLARING & INITIALISING BUTTON TO SIGN UP
FButton sign_Up;


final String KEY_NAME = "name";
final String KEY_PASSWORD ="password";
final String KEY_MARKS ="marks";


private FirebaseFirestore db = FirebaseFirestore.getInstance();
private DocumentReference user_reference = db.document("Users/Users details");

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

    //INITIALISING THE EDITTEXT VIEWS
    edit_name = findViewById(R.id.editName);
    edit_password = findViewById(R.id.editPassword);
    sign_Up = findViewById(R.id.btn_signUp);

    sign_Up.setOnClickListener(view ->
    {
        user_reference.get()
                .addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>()
                {
                    Map<String, Object> users = new HashMap<>();
                    String name = edit_name.getText().toString();
                    String password = edit_password.getText().toString();

                    @Override
                    public void onSuccess(DocumentSnapshot documentSnapshot)
                    {
                        if(documentSnapshot.exists())
                        { // GETTING INFORMATION FROM FIRESTORE DATABASE
                            name = documentSnapshot.getString(KEY_NAME);
                            password = documentSnapshot.getString(KEY_PASSWORD);
                            Toast.makeText(sign_up.this, "This user already exist, Try again", Toast.LENGTH_LONG).show();
                        }
                        else
                        {
                            users.put(KEY_NAME,name);
                            users.put(KEY_PASSWORD, password);

                            db.collection("Users").document(name).set(users);
                            Toast.makeText(sign_up.this,"Registered",Toast.LENGTH_LONG).show();
                            Intent i = new Intent(sign_up.this,sum_selection.class);
                            startActivity(i);

                        }


                    }// END OF ONSUCCESS
                })
                .addOnFailureListener(new OnFailureListener()
                {

                    @Override
                    public void onFailure(@NonNull Exception e)
                    {
                        Toast.makeText(sign_up.this, "Error",Toast.LENGTH_LONG).show();
                        Log.d(TAG,e.toString());

                    }
                });

登录活动


    private MaterialEditText user_name;
    private MaterialEditText user_password;
    FButton sign_in;

    private FirebaseFirestore database = FirebaseFirestore.getInstance();
    private DocumentReference user_reference = database.document("Users/users details");

    final String KEY_NAME = "name";
    final String KEY_PASSWORD = "password";

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

        sign_in = findViewById(R.id.btn_sign_in);


        sign_in.setOnClickListener(new View.OnClickListener()
        {

            @Override
            public void onClick(View view)  // log in button
            {
                user_reference.get()
                        .addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>()
                        {
                            @Override
                            public void onSuccess(DocumentSnapshot documentSnapshot)
                            {
                                if(documentSnapshot.exists())
                                {
                                    Toast.makeText(log_in.this,"Welcome"+ user_name, Toast.LENGTH_LONG).show();

                                    // ADD INTENT TO GO TO THE SUM_SELECTION PAGE
                                    Intent in = new Intent(log_in.this, sum_selection.class);
                                    startActivity(in);
                                }
                                else
                                {
                                    // DISPLAY ERROR MESSAGE TO USER
                                    Toast.makeText(log_in.this, "User does not exist", Toast.LENGTH_LONG).show();
                                }

                            }
                        })
                        .addOnFailureListener(new OnFailureListener()
                        {
                            @Override
                            public void onFailure(@NonNull Exception e)
                            {
                                Log.d(TAG, e.toString());
                            }
                        }); ```

   


  [Error message][1]


  [1]: https://i.stack.imgur.com/8gR62.png

标签: javaandroidfirebase-realtime-database

解决方案


Intent i = new Intent((this/activity),LoginActivity.class);
(this/activity).startActivity(i);
                        

正确检查您的意图,意图将当前活动作为第一个参数,将您要加载的活动作为第二个参数。另外,startActivity(i)由于activity context当前您处于Firebase Listener.

另外,发布错误日志。


推荐阅读