0

I created an onclick condition to login, when I run the application it exits itself and raises an error, I suspect the error is in the following code section

 Intent intent = new Intent(context, MainActivity.class);
        startActivity(intent);
        getActivity().finish();

how to make the code executable?

The error :

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.abiapp.androidukk, PID: 28347
    java.lang.IllegalStateException: Fragment LoginFragment{4981b94} (f7c99ef6-7be5-4ff5-9105-180cd015a38f) not attached to Activity
        at androidx.fragment.app.Fragment.startActivity(Fragment.java:1443)
        at androidx.fragment.app.Fragment.startActivity(Fragment.java:1433)
        at com.abiapp.androidukk.ui.login.LoginFragment.onLoginSuccess(LoginFragment.java:89)
        at com.abiapp.androidukk.helper.Helper$4.onResponse(Helper.java:94)
        at com.abiapp.androidukk.helper.Helper$4.onResponse(Helper.java:74)
        at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:82)
        at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:29)
        at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:102)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:257)
        at android.app.ActivityThread.main(ActivityThread.java:8218)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:626)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1015)

Here is my LoginFragment, in code Helper.loginUser(getContext(),username,password); I also included getContext() because if I didn't include getContext(), the method that uses getContext() in the LoginFragment class will be null.

I suspect for MainActivity.class to have the same case, but I don't know how to fix it

The LoginFragment class :

public class LoginFragment extends Fragment {

    private FragmentLoginBinding binding;

    private EditText usernameEditText,passwordEditText;

    private MainActivity mainActivity;
    
    public View onCreateView(LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_login,container,false);
        Button button = view.findViewById(R.id.btnSubmit);

        usernameEditText = view.findViewById(R.id.edit_textUsername);
        passwordEditText = view.findViewById(R.id.edit_textPassword);

        // menambahkan event setOnClickListener() pada tombol btnSubmit
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // memanggil method untuk login
                String username = usernameEditText.getText().toString().trim();
                String password = passwordEditText.getText().toString().trim();

                if (mainActivity != null){
                    System.out.println("ada kok");
                }

                Helper.loginUser(getContext(),username,password);
            }
        });

        return view;
    }

    public void onLoginSuccess(Context context, String nik, String nama, String username, String password, String telp, String sessionId) {
        // Login berhasil, simpan data user ke shared preferences
        if (context != null){
            System.out.println("ada kok 4");
        }
        SharedPreferences sharedPref = context.getSharedPreferences("USER_DATA", MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPref.edit();
        editor.putString("nik", nik);
        editor.putString("nama", nama);
        editor.putString("username", username);
        editor.putString("password", password);
        editor.putString("telp", telp);
        editor.putString("session_id", sessionId);
        editor.apply();

        // Tampilkan pesan sukses dan pindah ke halaman berikutnya
        Toast.makeText(context, "Login berhasil", Toast.LENGTH_SHORT).show();
        Intent intent = new Intent(context, StartActivity.class);
        startActivity(intent);
        getActivity().finish();
    }

    public void onLoginFailed(Context context, String message) {
        // Login gagal, tampilkan pesan error
        Toast.makeText(context, "Login gagal: " + message, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        binding = null;
    }
}

I've tried a few things and also asked the AI, but it still doesn't work

NewbieMF
  • 23
  • 4
  • Does this help https://stackoverflow.com/questions/1559955/host-xxx-xx-xxx-xxx-is-not-allowed-to-connect-to-this-mysql-server ? – Vladimir Pligin Feb 21 '23 at 06:10

0 Answers0