安卓:启动第二个活动时出现NoSuchFieldError错误

9

我有两个应用程序,现在我想把其中一个转化为库文件,以便从另一个应用程序中启动。在我的库文件中,我有一个Facebook图片和一个Twitter图片,但这导致了NoSuchFieldError错误。我已经在清单文件中定义了该库。

<activity android:name="com.funayman.listactivity.ApplicationListActivty" />

我正在使用以下方式启动此活动

startActivity(new Intent(this, ApplicationListActivty.class));

看起来找到了活动,但在启动时,我在LogCat中收到以下错误:

E/AndroidRuntime(  731): java.lang.NoSuchFieldError: com.funayman.listactivity.R$id.img_fb
E/AndroidRuntime(  731):    at com.funayman.listactivity.ApplicationListActivty.onCreate(ApplicationListActivtyActivity.java:58)
E/AndroidRuntime(  731):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime(  731):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
E/AndroidRuntime(  731):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
E/AndroidRuntime(  731):    at android.app.ActivityThread.access$2200(ActivityThread.java:119)
E/AndroidRuntime(  731):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
E/AndroidRuntime(  731):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(  731):    at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(  731):    at android.app.ActivityThread.main(ActivityThread.java:4363)
E/AndroidRuntime(  731):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(  731):    at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(  731):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
E/AndroidRuntime(  731):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
E/AndroidRuntime(  731):    at dalvik.system.NativeStart.main(Native Method)

我应该指出,如果我将我的库作为一个应用程序启动,一切都能正常工作并正确加载,没有任何错误。
谢谢你的帮助!
编辑
我找到了问题所在。 在我的库中,我正在使用
setContentView(R.layout.main);

重命名我的布局解决了我的问题。
谢谢。

+1,我正想问同样的问题。 - Bill The Ape
1个回答

8

startActivitynew Intent(Context, class)只适用于同一应用程序中的活动。如果您想从应用程序外部启动活动,请使用其完整的包名称。 例如,

Intent i = new Intent("com.test.application");
startActivity(i);

同时请注意,您将 Activty 拼写为没有'i'(只是指出,也许您有意这样做?)

+1 针对这个无价的信息,恰好出现在正确的地方和正确的时间,非常感谢!我相信这个信息也许藏在我的 718 页书中的某个角落,但是你的信息更容易找到。谢谢! - Bill The Ape

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接