мое приложение закрывается после того, как работает метод входа - PullRequest
0 голосов
/ 09 июня 2018

Я отредактировал страницу входа с фрагментом в моем приложении так:

public class LoginFragment extends Fragment {


private EditText editTextUserName;
private EditText editTextUserPassword;
private Button buttonLogin;
private TextView txtRegister;
private FirebaseAuth mAuth;
private FirebaseUser firebaseUser;
private String userName;
private String userPassword;


@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    View view=inflater.inflate(R.layout.fragment_login, container, false);

    editTextUserName = view.findViewById(R.id.editTextUserName);
    editTextUserPassword = view.findViewById(R.id.editTextUserPassword);
    buttonLogin = view.findViewById(R.id.buttonLogin);
    txtRegister = view.findViewById(R.id.txtRegister);
    mAuth = FirebaseAuth.getInstance();
    firebaseUser = mAuth.getCurrentUser(); // authenticated user

    if(firebaseUser != null){ // check user session

        getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                new ProfileFragment()).commit();
    }

    buttonLogin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            userName = editTextUserName.getText().toString();
            userPassword = editTextUserPassword.getText().toString();
            if(userName.isEmpty() || userPassword.isEmpty()){

                Toast.makeText(getActivity().getApplicationContext(),"Lütfen gerekli alanları doldurunuz!",Toast.LENGTH_SHORT).show();

            }else{

                loginFunc();
            }
        }
    });

    txtRegister.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new RegisterFragment()).commit();
        }
    });

    return view;

}

private void loginFunc() {

    mAuth.signInWithEmailAndPassword(userName,userPassword).addOnCompleteListener((Executor) LoginFragment.this,
            new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if(task.isSuccessful()){

                        getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                                new ProfileFragment()).commit();

                    }
                    else{
                        // hata
                        Toast.makeText(getActivity().getApplicationContext(),task.getException().getMessage(),Toast.LENGTH_SHORT).show();
                        getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                                new HomeFragment()).commit();
                    }
                }

            });
}

в моей MainActivity я вызываю LoginFragment так:

private Toolbar.OnMenuItemClickListener toolbarListener= new Toolbar.OnMenuItemClickListener() {
    @Override
    public boolean onMenuItemClick(MenuItem item) {

        switch (item.getItemId()){

            case R.id.action_profil:
                //Intent intent = new Intent(MainActivity.this,RegisterActivity.class);
                //startActivity(intent);

                getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                        new LoginFragment()).commit();
                break;
        }

        return true;
    }
};

в logcat У меня есть это сообщение:

06-09 11:24:30.416 20619-20619/com.kaydeniz.ihaleajandasi2 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.kaydeniz.ihaleajandasi2, PID: 20619 java.lang.ClassCastException: com.kaydeniz.ihaleajandasi2.LoginFragment cannot be cast to java.util.concurrent.Executor at com.kaydeniz.ihaleajandasi2.LoginFragment.loginFunc(LoginFragment.java:88) at com.kaydeniz.ihaleajandasi2.LoginFragment.access$400(LoginFragment.java:25) at com.kaydeniz.ihaleajandasi2.LoginFragment$1.onClick(LoginFragment.java:69) at android.view.View.performClick(View.java:6294) at android.view.View$PerformClick.run(View.java:24770) at android.os.Handler.handleCallback(Handler.java:790) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6494) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

в моем приложении, когда задача выполнена успешно, приложение закрывается и после того, как я снова запускаю приложение, я могу ввести фрагмент профиля.Когда задача не выполнена, мое приложение также закрывается.Я не смог найти ошибку, чтобы закрыть приложение.Не могли бы вы помочь?

1 Ответ

0 голосов
/ 09 июня 2018

Ошибка при вызове фрагмента, вы используете это

//on  Success
    final FragmentTransaction ft = getActivity.getFragmentManager().beginTransaction(); 
        ft.replace(R.id. fragment_container, new ProfileFragment(), "ProfileFragment"); 
        ft.commit(); 


//on failed
    final FragmentTransaction ft = getActivity.getFragmentManager().beginTransaction(); 
    ft.replace(R.id. fragment_container, new HomeFragment(), "HomeFragment"); 
    ft.commit(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...