1

I know this has been asked multiple times, and I been trying to fix it, but I really can't seem to understand what the problem is. I'm really new to Android Studio and Android Room, so if I'm honest, I barely have a clue what I'm doing. I assume the error occurs in my "MainActivity.java" class based off what the logcat tells me. This is my logcat

2020-06-15 01:33:41.885 21773-21773/com.example.hoply5 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.hoply5, PID: 21773
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.hoply5/com.example.hoply5.MainActivity}: java.lang.ClassCastException: com.example.hoply5.MainActivity cannot be cast to android.app.Activity
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3272)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3500)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2049)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:223)
    at android.app.ActivityThread.main(ActivityThread.java:7523)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:941)
 Caused by: java.lang.ClassCastException: com.example.hoply5.MainActivity cannot be cast to android.app.Activity
    at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95)
    at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:41)
    at android.app.Instrumentation.newActivity(Instrumentation.java:1253)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3260)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3500) 
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2049) 
    at android.os.Handler.dispatchMessage(Handler.java:106) 
    at android.os.Looper.loop(Looper.java:223) 
    at android.app.ActivityThread.main(ActivityThread.java:7523) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:941) 

Here is my MainActivity class

public class SecondFragment extends Fragment {

EditText editTxtName, editTxtEmail, editTxtPwd, editTextCnfPwd;
Button backBtn, registerBtn;
private UserDao userDao;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_second, container, false);

    editTxtName = view.findViewById(R.id.editName);
    editTxtEmail = view.findViewById(R.id.editEmail);
    editTxtPwd = view.findViewById(R.id.editPwd);
    registerBtn = view.findViewById(R.id.registerBtn2);
    editTextCnfPwd = view.findViewById(R.id.editCnfPwd);
    backBtn = view.findViewById(R.id.backBtn);

    backBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(v.getContext(), MainActivity.class);
            startActivity(intent);
        }

    });

    userDao = Room.databaseBuilder(getActivity(), UserDatabase.class, "User").build().getUserDao();

    registerBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String userName = editTxtName.getText().toString().trim();
            String email = editTxtEmail.getText().toString().trim();
            String password = editTxtPwd.getText().toString().trim();
            String passwordCnf = editTextCnfPwd.getText().toString().trim();

            if(password.equals(passwordCnf)) {
                User user = new User(userName,password,email);
                userDao.insert(user);
                Intent transitionLogin = new Intent(getActivity(), MainActivity.class);
                startActivity(transitionLogin);
            } else {
                Toast.makeText(getActivity(), "Password is not matching", Toast.LENGTH_SHORT).show();
            }
        }
    });
   return view;
}

}

cppnoob
  • 47
  • 6
  • 1
    Hi~ the code you post seems like be `SecondFragment`, maybe you pasted a wrong code? – Hababa Jun 15 '20 at 00:48
  • @Hababa hmm, I will try that. However, if I do that I can't seem to use "this" when making an Intent statement, are there any alternatives of what else to use? – cppnoob Jun 15 '20 at 00:53
  • Oh, what I said `maybe you pasted a wrong code` means I thought the code you post on StackOverflow may be wrong. You can see that you were asking `MainActivity class`, but the code you post was `SecondFragment`. – Hababa Jun 15 '20 at 01:01

1 Answers1

2

Your MainActivity is Fragment,so you have to replace it

Antway1024
  • 71
  • 6