Android: почему я не могу перейти на другую активность, используя «Намерение»? - PullRequest
0 голосов
/ 12 января 2019

Я не могу перейти к LoginPageActivity. Я думаю, что проблема в моем «намерении». Может быть, я дал неправильный «контекст». Все выглядит хорошо. Но приложение сокрушительно. Я не мог найти проблему. Вы можете мне помочь? Что я должен дать в качестве контекста в инструкциях MainActivity и ELSE?

Я думаю, что проблема в намерении в классе Хелпер.

У меня есть условие ЕСЛИ вот так:

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);
                    }
                }
            });
}

Когда я пытаюсь создать новую учетную запись, мое условие else работает. Но почему я не могу перейти на 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 голосов
/ 13 января 2019

Я нашел свою ошибку (и):

Во-первых, мне нужен код в выражении ELSE MainActivity, например:

((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>
0 голосов
/ 12 января 2019

Когда вы вызываете метод "createNewUser ()", вы находитесь внутри onClickListener. Когда вы передаете «this» в качестве контекста, вы передаете в контексте вашего слушателя. Вместо этого, при вызове createNewUser, используйте «MainActivity.this» в качестве контекста, чтобы ваше приложение знало, что контекст - это целое действие, а не только слушатель. Это означает, что код должен быть

}else {

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