简体   繁体   English

Android获取错误ActivityNotFoundException

[英]Android Getting Error ActivityNotFoundException

I'm new here in android programming but it seems I can't find my error I need your help 我在android编程中是新来的,但似乎找不到我需要我帮助的错误

Every time I log in and click the button btnLogin app stops. 每次我登录并单击按钮btnLogin app都会停止。

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 但是在AndroidManifest声明DocLogin类之后

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? 有什么想法吗?

DocLogin is Fragment not an Activity . DocLogin是Fragment而不是Activity

Add DocLogin Fragment to Activity then declare that Activity in the AndroidManifest.xml file 将DocLogin Fragment添加到Activity然后在AndroidManifest.xml文件中声明该Activity

The ActivityNotFound exception is shown because it cannot find the said activity. 显示ActivityNotFound异常,因为它找不到所述活动。 Instead of the class that you've created, create an Android Activity of the same and declare it in the Android Manifest. 代替您创建的类,创建相同的Android Activity并在Android Manifest中进行声明。

ActivitynotFound exception is because of the absence of activity declaration inside AndroidManifest.xml file. ActivitynotFound异常是因为AndroidManifest.xml文件中没有活动声明。

I think your Activity class is DocProfile. 我认为您的Activity类是DocProfile。 Make sure it extends FragmentActivity and add the DocLogin fragment to the DocProfile Activty. 确保它扩展了FragmentActivity并将DocLogin片段添加到DocProfile Activty。

DocLogin is not extending activity. DocLogin不扩展活动。 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. 如果您想让DocLogin扩展片段,则再创建一个活动,并向该活动添加视图,这由DocLogin返回,如下所示。

public class MainActivity extends Activity{ 公共类MainActivity扩展了Activity {

DocLogin doclogin; DocLogin doclogin;

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

} }

Please add your Activity in your AndroidManifest.xml. 请在您的AndroidManifest.xml中添加您的活动。

When you want to making new activity, you should register it in your AndroidManifest.xml. 当您要进行新活动时,应在AndroidManifest.xml中进行注册。

as your logcat says: 如您的logcat所说:

 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. 您没有在清单文件中声明com.droid.DocLogin。

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. 这是因为DocLogin是一个片段而不是活动,您也可以使用getactivity()作为片段的上下文。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM