2014-02-12 60 views
0

我是新的android开发。我试图从按钮点击第一个应用程序开始第二个应用程序的活动。但是我的应用程序停止了。我的意图可能会出错。 这是logcat的:从Android的第一个应用程序开始第二个应用程序的活动

02-12 18:06:50.948: D/gralloc_goldfish(1247): Emulator without GPU emulation detected. 
02-12 18:07:02.338: D/AndroidRuntime(1247): Shutting down VM 
02-12 18:07:02.338: W/dalvikvm(1247): threadid=1: thread exiting with uncaught exception (group=0xb3ad1b90) 
02-12 18:07:02.528: E/AndroidRuntime(1247): FATAL EXCEPTION: main 
02-12 18:07:02.528: E/AndroidRuntime(1247): Process: smd.homework1.question2, PID: 1247 
02-12 18:07:02.528: E/AndroidRuntime(1247): java.lang.IllegalStateException: Could not execute method of the activity 
02-12 18:07:02.528: E/AndroidRuntime(1247):  at android.view.View$1.onClick(View.java:3814) 
02-12 18:07:02.528: E/AndroidRuntime(1247):  at android.view.View.performClick(View.java:4424) 
02-12 18:07:02.528: E/AndroidRuntime(1247):  at android.view.View$PerformClick.run(View.java:18383) 
02-12 18:07:02.528: E/AndroidRuntime(1247):  at android.os.Handler.handleCallback(Handler.java:733) 
02-12 18:07:02.528: E/AndroidRuntime(1247):  at android.os.Handler.dispatchMessage(Handler.java:95) 
02-12 18:07:02.528: E/AndroidRuntime(1247):  at android.os.Looper.loop(Looper.java:137) 
02-12 18:07:02.528: E/AndroidRuntime(1247):  at android.app.ActivityThread.main(ActivityThread.java:4998) 
02-12 18:07:02.528: E/AndroidRuntime(1247):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-12 18:07:02.528: E/AndroidRuntime(1247):  at java.lang.reflect.Method.invoke(Method.java:515) 
02-12 18:07:02.528: E/AndroidRuntime(1247):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 
02-12 18:07:02.528: E/AndroidRuntime(1247):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 
02-12 18:07:02.528: E/AndroidRuntime(1247):  at dalvik.system.NativeStart.main(Native Method) 
02-12 18:07:02.528: E/AndroidRuntime(1247): Caused by: java.lang.reflect.InvocationTargetException 
02-12 18:07:02.528: E/AndroidRuntime(1247):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-12 18:07:02.528: E/AndroidRuntime(1247):  at java.lang.reflect.Method.invoke(Method.java:515) 
02-12 18:07:02.528: E/AndroidRuntime(1247):  at android.view.View$1.onClick(View.java:3809) 
02-12 18:07:02.528: E/AndroidRuntime(1247):  ... 11 more 
02-12 18:07:02.528: E/AndroidRuntime(1247): Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=textViewActivity } 
02-12 18:07:02.528: E/AndroidRuntime(1247):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1632) 
02-12 18:07:02.528: E/AndroidRuntime(1247):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1424) 
02-12 18:07:02.528: E/AndroidRuntime(1247):  at android.app.Activity.startActivityForResult(Activity.java:3423) 
02-12 18:07:02.528: E/AndroidRuntime(1247):  at android.app.Activity.startActivityForResult(Activity.java:3384) 
02-12 18:07:02.528: E/AndroidRuntime(1247):  at android.app.Activity.startActivity(Activity.java:3626) 
02-12 18:07:02.528: E/AndroidRuntime(1247):  at android.app.Activity.startActivity(Activity.java:3594) 
02-12 18:07:02.528: E/AndroidRuntime(1247):  at smd.homework1.question2.MainActivity.function1(MainActivity.java:36) 
02-12 18:07:02.528: E/AndroidRuntime(1247):  ... 14 more 

线36是startActivity(i); 按钮点击功能是:

public void function1(View v){ 
    Intent i= new Intent("textViewActivity"); 
    startActivity(i); 
} 

<activity 
    android:name="Activity2" 
    android:label="@string/a2" > 
    <intent-filter> 
     <action android:name="textViewActivity" /> 
    </intent-filter> 
</activity> 
+0

确保你有使用'android:onClick'调用的功能 – hypd09

+0

你有没有在mainefest文件中声明你的另一个活动? – rajshree

+0

@ hypd09是的。我已经发布了该功能。从logcat中我可以看到错误在'startActivity(i);' – SSMA

回答

3

在机器人的每个应用程序是一个独立的进程的mainifest,除了通过意图之外,你不能进行任何通信,所以你需要从app1发送一个动作意图,并实现一个广播接收器在app2中捕捉意图并激发您的活动。

app1->activityA->send intent->app2 receiver->start activity-> activityB 

here是官方文档提供了在那里你可以跳过broacastreceivers为您的活动将是一定的intent filter

+0

我正在使用意图,因为我的代码可以看到。但我们还没有研究过接收器。我们的教练告诉我们,我们可以用隐含的意图来完成任务。 – SSMA

+0

看到我的编辑,你可以有意向过滤器 –

+0

谢谢!这些链接真的很有用! – SSMA

2

接收器在AndroidManifest.xml声明活性

<activity 
    android:name="Activity2" 
    android:label="@string/a2" 
    android:exported="true" > 
</activity> 

代码另一种方式执行它是:

Intent intent = new Intent(); 
intent.setComponent(new ComponentName("com.example", "com.example.Activity2")); 
startActivity(intent); 

com.example替换为第二个应用程序包名称,将com.example.Activity2替换为具有包限定的活动名称。


声明活动AndroidManifest.xml作为

<activity 
    android:name="Activity2" 
    android:label="@string/a2" > 
    <intent-filter> 
     <action android:name="com.example.myintent" /> 
    </intent-filter> 
</activity> 

要执行的代码是:

Intent intent = new Intent(); 
intent.setAction("com.example.myintent"); 
startActivity(intent); 

替换com.example.myintent与你的意图的名字。

+0

将使其明确的意图,但我想使用隐含的意图(因为它在分配中是必需的)。 – SSMA

+1

作业...帮助...您是否正在考试? :) – 2014-02-12 13:42:54

+0

不,我正在接受那些知道的人的帮助。我本可以问我的教练,但他会在星期六上课。所以我想我可以使用你们的帮助。 – SSMA

相关问题