我无法转到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");
}
}
答案 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>