Android:为什么不能通过使用“ Intent”迁移到另一个Acivity?

时间:2019-01-12 19:40:50

标签: android firebase android-intent firebase-authentication

我无法转到LoginPageActivity。我认为问题出在我的'Intent'语句中。也许,我给了错误的“上下文”。一切看起来都很好。但是应用程序正在崩溃。我找不到问题。你能帮助我吗?我应该在MainActivity和ELSE语句中给出什么上下文?

我认为问题出在Helper类中。

我有这样的IF条件:

public void createNewUser(final Context context, String email, String password){
        firebaseAuth = FirebaseAuth.getInstance();
        firebaseAuth.createUserWithEmailAndPassword(email, password)
            .addOnCompleteListener((Activity) context, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (!task.isSuccessful()) {
                        ShortCut.displayMessageToast(context,  "invalid info");
                    }else {
                        ShortCut.displayMessageToast(context, "Account created");
                        Intent loginIntent = new Intent(context, LoginPageActivity.class);
                        context.startActivity(loginIntent);
                    }
                }
            });
}

当我尝试创建一个新帐户时,其他条件正常。但是,为什么我不能转到LoginPageActivity?

然后,我从这里在MainActivity中呼叫:

@OnClick(R.id.createBtn)
void createButonClicked(){

    String email = mEmail.getText().toString();
    String password = mPassword.getText().toString();
    String clientName = mClientName.getText().toString();
    String clientSurname = mClientSurname.getText().toString();
    String clientCity = mClientCity.getText().toString();
    String clientPhone = mClientPhone.getText().toString();
    if (TextUtils.isEmpty(email)
            || TextUtils.isEmpty(password)
            || TextUtils.isEmpty(clientName)
            || TextUtils.isEmpty(clientSurname)
            || TextUtils.isEmpty(clientCity)
            || TextUtils.isEmpty(clientPhone))
    {
        ShortCut.displayMessageToast(this, "You should fill empty fields!");

    }else {

        firebaseApplication = new FirebaseApplication();
        firebaseApplication.createNewUser(this, email, password);
        ShortCut.displayMessageToast(this, "just for a debug");
    }
}

2 个答案:

答案 0 :(得分:0)

当调用方法“ createNewUser()”时,您位于onClickListener中。当您传入“ this”作为上下文时,您传入的是侦听器的上下文。相反,在调用createNewUser时,请使用“ MainActivity.this”作为上下文,这样您的应用程序就会知道上下文是整个活动,而不仅仅是侦听器。那意味着代码应该是

{{1}}

答案 1 :(得分:0)

我发现我的错:

首先,我需要在MainActivity的ELSE语句中输入如下代码:

((FirebaseApplication)getApplication()).createNewUser(MainActivity.this, email, password);

其次,我需要更改必须在以下位置声明的AndroidManifest.xml LoginPageActivity的内容:

<application>
...
...-->Another activity...
...
   <activity android:name=".LoginPageActivity">
       <intent-filter>
           <action android:name="android.intent.action.MAIN" />

           <category android:name="android.intent.category.LAUNCHER" />
       </intent-filter>
   </activity>
</application>