0

I'm new here in android programming but it seems I can't find my error I need your help

Every time I log in and click the button btnLogin app stops.

Login class

public class DocLogin extends Fragment {

ImageView ivIcon;
TextView tvItemName, tvRegister;
EditText user, pass;
Button btnLogin;
SQLController dbcon;
SessionManager session;

public DocLogin() {

}

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

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

    session = new SessionManager(getActivity());

    dbcon = new SQLController(getActivity());
    dbcon.open();

    // Log in
    user = (EditText) view.findViewById(R.id.etUser);
    pass = (EditText) view.findViewById(R.id.etPassword);
    btnLogin = (Button) view.findViewById(R.id.btnLogin);

    // Sign up
    tvRegister = (TextView) view.findViewById(R.id.tvRegDoc);
    tvRegister.setMovementMethod(LinkMovementMethod.getInstance());
    tvRegister.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            FragmentManager fm = getFragmentManager();
            FragmentTransaction ft = fm.beginTransaction();
            ft.replace(R.id.content_frame, new DocReg());
            ft.commit();
            return false;
        }
    });

    // btnLogin onClickListener
    btnLogin.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View view) {
            // TODO Auto-generated method stub

            dbcon = new SQLController(getActivity());
            dbcon.open();


            Log.v("LoginDetails", user.getText().toString() + "../.."
                    + pass.getText().toString());
            Cursor cur = dbcon.getuser_information(user.getText()
                    .toString(), pass.getText().toString());
            if (cur.getCount() != 0) {
                FragmentManager fm = getFragmentManager();
                FragmentTransaction ft = fm.beginTransaction();
                ft.replace(R.id.content_frame, new DocProfile());
                ft.commit();
            } else {
                AlertDialog alertDialog = new AlertDialog.Builder(
                        getActivity()).create();
                alertDialog.setTitle("Login Error");
                alertDialog
                        .setMessage("Doctor Code and Password does not match");
                alertDialog.setButton("OK",
                        new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog,
                                    int which) {
                                // TODO Auto-generated method stub
                                // dismiss dialog
                            }
                        });
                alertDialog.show();
            }

        }
    });

    return view;
}

}

This is the error I'm getting

06-23 14:11:16.483: E/Trace(4864): error opening trace file: No such file or directory (2)
06-23 14:11:27.783: E/AndroidRuntime(4864): FATAL EXCEPTION: main
06-23 14:11:27.783: E/AndroidRuntime(4864): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.droid/com.droid.DocLogin}; have you declared this activity in your AndroidManifest.xml?
06-23 14:11:27.783: E/AndroidRuntime(4864):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1541)
06-23 14:11:27.783: E/AndroidRuntime(4864):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1416)
06-23 14:11:27.783: E/AndroidRuntime(4864):     at android.app.Activity.startActivityForResult(Activity.java:3351)
06-23 14:11:27.783: E/AndroidRuntime(4864):     at android.app.Activity.startActivityForResult(Activity.java:3312)
06-23 14:11:27.783: E/AndroidRuntime(4864):     at android.app.Activity.startActivity(Activity.java:3522)
06-23 14:11:27.783: E/AndroidRuntime(4864):     at android.app.Activity.startActivity(Activity.java:3490)
06-23 14:11:27.783: E/AndroidRuntime(4864):     at com.droid.SessionManager.checkLogin(SessionManager.java:41)
06-23 14:11:27.783: E/AndroidRuntime(4864):     at com.droid.DocProfile.onCreateView(DocProfile.java:43)
06-23 14:11:27.783: E/AndroidRuntime(4864):     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:829)
06-23 14:11:27.783: E/AndroidRuntime(4864):     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035)
06-23 14:11:27.783: E/AndroidRuntime(4864):     at android.app.BackStackRecord.run(BackStackRecord.java:635)
06-23 14:11:27.783: E/AndroidRuntime(4864):     at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1397)
06-23 14:11:27.783: E/AndroidRuntime(4864):     at android.app.FragmentManagerImpl$1.run(FragmentManager.java:426)
06-23 14:11:27.783: E/AndroidRuntime(4864):     at android.os.Handler.handleCallback(Handler.java:615)
06-23 14:11:27.783: E/AndroidRuntime(4864):     at android.os.Handler.dispatchMessage(Handler.java:92)
06-23 14:11:27.783: E/AndroidRuntime(4864):     at android.os.Looper.loop(Looper.java:137)
06-23 14:11:27.783: E/AndroidRuntime(4864):     at android.app.ActivityThread.main(ActivityThread.java:4745)
06-23 14:11:27.783: E/AndroidRuntime(4864):     at java.lang.reflect.Method.invokeNative(Native Method)
06-23 14:11:27.783: E/AndroidRuntime(4864):     at java.lang.reflect.Method.invoke(Method.java:511)
06-23 14:11:27.783: E/AndroidRuntime(4864):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
06-23 14:11:27.783: E/AndroidRuntime(4864):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
06-23 14:11:27.783: E/AndroidRuntime(4864):     at dalvik.system.NativeStart.main(Native Method)

But after declaring DocLogin class in AndroidManifest

This is the error

06-23 14:09:53.463: E/AndroidRuntime(4791): FATAL EXCEPTION: main
06-23 14:09:53.463: E/AndroidRuntime(4791): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.droid/com.droid.DocLogin}: java.lang.ClassCastException: com.droid.DocLogin cannot be cast to android.app.Activity
06-23 14:09:53.463: E/AndroidRuntime(4791):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983)
06-23 14:09:53.463: E/AndroidRuntime(4791):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
06-23 14:09:53.463: E/AndroidRuntime(4791):     at android.app.ActivityThread.access$600(ActivityThread.java:130)
06-23 14:09:53.463: E/AndroidRuntime(4791):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
06-23 14:09:53.463: E/AndroidRuntime(4791):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-23 14:09:53.463: E/AndroidRuntime(4791):     at android.os.Looper.loop(Looper.java:137)
06-23 14:09:53.463: E/AndroidRuntime(4791):     at android.app.ActivityThread.main(ActivityThread.java:4745)
06-23 14:09:53.463: E/AndroidRuntime(4791):     at java.lang.reflect.Method.invokeNative(Native Method)
06-23 14:09:53.463: E/AndroidRuntime(4791):     at java.lang.reflect.Method.invoke(Method.java:511)
06-23 14:09:53.463: E/AndroidRuntime(4791):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
06-23 14:09:53.463: E/AndroidRuntime(4791):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
06-23 14:09:53.463: E/AndroidRuntime(4791):     at dalvik.system.NativeStart.main(Native Method)
06-23 14:09:53.463: E/AndroidRuntime(4791): Caused by: java.lang.ClassCastException: com.droid.DocLogin cannot be cast to android.app.Activity
06-23 14:09:53.463: E/AndroidRuntime(4791):     at android.app.Instrumentation.newActivity(Instrumentation.java:1053)
06-23 14:09:53.463: E/AndroidRuntime(4791):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974)
06-23 14:09:53.463: E/AndroidRuntime(4791):     ... 11 more

Any ideas on this?

Kailas
  • 7,350
  • 3
  • 47
  • 63
user3766257
  • 25
  • 2
  • 7

5 Answers5

0

DocLogin is Fragment not an Activity.

Add DocLogin Fragment to Activity then declare that Activity in the AndroidManifest.xmlfile

Kailas
  • 7,350
  • 3
  • 47
  • 63
Amit Gupta
  • 8,914
  • 1
  • 25
  • 33
0

The ActivityNotFound exception is shown because it cannot find the said activity. Instead of the class that you've created, create an Android Activity of the same and declare it in the Android Manifest.

deathstroke
  • 526
  • 12
  • 33
0

ActivitynotFound exception is because of the absence of activity declaration inside AndroidManifest.xml file.

I think your Activity class is DocProfile. Make sure it extends FragmentActivity and add the DocLogin fragment to the DocProfile Activty.

Jiju Induchoodan
  • 4,236
  • 1
  • 22
  • 24
  • if I will use `FragmentActivity` how to get the context ? – user3766257 Jun 23 '14 at 06:22
  • there is function getActivity() for getting the activity. The better way is to write the onAttach() method and assign the activity to some variable and you can use that inside the fragment entirely – Jiju Induchoodan Jun 23 '14 at 06:26
0

DocLogin is not extending activity. so remove fragment and extends activity

If you want DocLogin to extend fragment then create one more activity and add view to that activity which is return by DocLogin like shown below.

public class MainActivity extends Activity{

DocLogin doclogin;

//In oncreate
 doclogin = new DocLogin();
 setcontentview(doclogin);

}

Please add your Activity in your AndroidManifest.xml.

When you want to making new activity, you should register it in your AndroidManifest.xml.

Lingeshwaran
  • 22
  • 1
  • 8
  • after trying ur suggestion I'm getting error on `setContentView` it says The method setContentView(int) in the type Activity is not applicable for the arguments (DocLogin) – user3766257 Jun 23 '14 at 07:02
  • ok. Instead of Fragment, extend FragmentActivity and try in your class; dont do above method which creating one activity and adding view to that activity. – Lingeshwaran Jun 23 '14 at 07:11
0

as your logcat says:

 android.content.ActivityNotFoundException: Unable to find explicit activity class 
{com.droid/com.droid.DocLogin}; have you declared this activity in your AndroidManifest.xml?

Reason

you havn't declare com.droid.DocLogin in your manifest file.

declare this activitry in menifest will remove this exception.

// also your getting one more exception which is:

java.lang.ClassCastException: com.droid.DocLogin cannot be cast to android.app.Activity 

this is because DocLogin is a fragment not a activity,also you can use getactivity() as a context for the fragment.

Pankaj Arora
  • 10,224
  • 2
  • 37
  • 59