Я отредактировал страницу входа с фрагментом в моем приложении так:
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)
в моем приложении, когда задача выполнена успешно, приложение закрывается и после того, как я снова запускаю приложение, я могу ввести фрагмент профиля.Когда задача не выполнена, мое приложение также закрывается.Я не смог найти ошибку, чтобы закрыть приложение.Не могли бы вы помочь?