2014-02-12 55 views
6

我有以下按钮:无法执行活动的方法的Android

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/btn_create_user" 
    android:id="@+id/btn_create_user" 
    android:onClick="onClickCreateUser" 

    android:layout_alignParentBottom="true" 
    android:background="@color/btn_create_user" 
    android:layout_alignLeft="@+id/btn_login" 
    android:layout_alignStart="@+id/btn_login" 
    android:layout_marginBottom="23dp" 
    android:layout_alignRight="@+id/btn_login" 
    android:layout_alignEnd="@+id/btn_login" /> 

具有以下的onclick功能:

public void onClickCreateUser(View v){ 
    Intent i = new Intent("dk.anapp.notebox.activity_createUser"); 
    startActivity(i); 
} 

当我按下按钮,我得到以下错误:

02-12 18:20:53.526 1598-1598/dk.anapp.notebox E/AndroidRuntime﹕ FATAL EXCEPTION: main 
java.lang.IllegalStateException: Could not execute method of the activity 
     at android.view.View$1.onClick(View.java:3044) 
     at android.view.View.performClick(View.java:3511) 
     at android.view.View$PerformClick.run(View.java:14105) 
     at android.os.Handler.handleCallback(Handler.java:605) 
     at android.os.Handler.dispatchMessage(Handler.java:92) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:4424) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:511) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
     at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.reflect.InvocationTargetException 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:511) 
     at android.view.View$1.onClick(View.java:3039) 
            at android.view.View.performClick(View.java:3511) 
            at android.view.View$PerformClick.run(View.java:14105) 
            at android.os.Handler.handleCallback(Handler.java:605) 
            at android.os.Handler.dispatchMessage(Handler.java:92) 
            at android.os.Looper.loop(Looper.java:137) 
            at android.app.ActivityThread.main(ActivityThread.java:4424) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:511) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
            at dalvik.system.NativeStart.main(Native Method) 
Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=dk.anapp.notebox.activity_createUser } 
     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1512) 
     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1384) 
     at android.app.Activity.startActivityForResult(Activity.java:3190) 
     at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:839) 
     at android.app.Activity.startActivity(Activity.java:3297) 
     at dk.anapp.notebox.Login.onClickCreateUser(Login.java:74) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:511) 
            at android.view.View$1.onClick(View.java:3039) 
            at android.view.View.performClick(View.java:3511) 
            at android.view.View$PerformClick.run(View.java:14105) 
            at android.os.Handler.handleCallback(Handler.java:605) 
            at android.os.Handler.dispatchMessage(Handler.java:92) 
            at android.os.Looper.loop(Looper.java:137) 
            at android.app.ActivityThread.main(ActivityThread.java:4424) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:511) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
            at dalvik.system.NativeStart.main(Native Method) 

我搜索到了,但我唯一能找到的答案是那些忘记在清单中声明类的人

这里是我的清单:

<?xml version="1.0" encoding="utf-8"?> 

<uses-sdk 
    android:minSdkVersion="9" 
    android:targetSdkVersion="18" /> 

<uses-permission android:name="android.permission.INTERNET" /> 

<application 
    android:name="dk.anapp.notebox.Mediator" 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="dk.anapp.notebox.Login" 
     android:label="@string/title_activity_login" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="dk.anapp.notebox.SoloActivity" 
     android:label="@string/title_activity_solo" > 
     <intent-filter> 
      <action android:name="dk.anapp.notebox.SoloActivity" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="dk.anapp.notebox.SpashScreen" 
     android:configChanges="orientation|keyboardHidden|screenSize" 
     android:label="@string/title_activity_spash_screen" 
     android:theme="@style/FullscreenTheme" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="dk.anapp.notebox.SpashScreen" 
     android:label="@string/title_activity_spash_screen" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="dk.anapp.notebox.MyGroups" 
     android:label="@string/title_activity_my_groups" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="dk.anapp.notebox.activity_createUser" 
     android:label="@string/title_activity_activity_create_user" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

那我做错了什么?

+0

你有没有把你的'Class'而不是操作的在你的意图创作尝试? '新的意图(activity_createUser.class)' – nKn

+0

你为什么使用字符串调用活动?你不能称通过课程的活动吗?就像那个“新意图(this,activity_createUser.class);” – GhostDerfel

+0

您的manifest.xml包含许多带有操作标记的活动.MAIN你在做什么?只制作在您的应用运行时首次启动的活动的主要活动 –

回答

8

您的清单只是做

<activity android:name="dk.anapp.notebox.activity_createUser" /> 

您应该只有一次使用这个<intent-filter>属性,指定要在启动时运行该活动

<intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 

此外,更改您的代码

public void onClickCreateUser(View v){ 
    Intent i = new Intent(this, Activity_createUser.class); 
    startActivity(i); 
} 

我假定您的活动类叫做Activity_createUser.java,如果不是这样的情况下,你应该改变上述new Intent(this, Activity_createUser.class);,以配合您的活动类的名字

1

试试这个希望这将解决你的问题。

Intent i = new Intent(currentclassname.this,dk.anapp.notebox.activity_createUser.class); 
startActivity(i); 
相关问题