我收到的ActivityNotFoundException
项活动已存在且已包含在我的应用AndroidManifest.xml
中。
以下是我的情景:
我的应用程序项目包是:com.myapplynx.mytexteditor.android
。
我的图书馆计划包是com.myapplynx.mytexteditor.common
我的库项目已正确包含在我的应用程序项目中,因为我可以在我的应用程序项目中使用库项目中的其他类。
活动MyTedAdvancedPreference
位于com.myapplynx.mytexteditor.common.prefs
包下的我的图书馆项目中。
在我的应用程序项目中,我有一个xml,res/xml/prefs.xml
,我在其中定义了首选项,包括调用MyTedAdvancedPreference
的首选项屏幕,如下所示:
<PreferenceScreen android:title="@string/config_cat_advanced" >
<intent android:action="android.intent.action.VIEW"
android:targetPackage="com.myapplynx.mytexteditor.android"
android:targetClass="com.myapplynx.mytexteditor.common.prefs.MyTedAdvancedPreferences"/>
请注意,MyTedAdvancedPreferences包含在我的应用程序项目AndroidManifest.xml中:
<application
.....
<activity android:name="com.myapplynx.mytexteditor.common.prefs.MyTedAdvancedPreference"
android:label="@string/title_settings"
android:theme="@style/MyApplynxTheme" >
</activity>
....
</application>
我的应用程序编译并运行正常。因此,当我访问我的设置页面并尝试访问MyTedAdvancedPreference
时,我会收到ActivityNotFoundException
:
10-25 14:15:52.734: E/AndroidRuntime(19049): FATAL EXCEPTION: main
10-25 14:15:52.734: E/AndroidRuntime(19049): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.myapplynx.mytexteditor.android/com.myapplynx.mytexteditor.common.prefs.MyTedAdvancedPreferences}; have you declared this activity in your AndroidManifest.xml?
活动在我的应用程序(com.myapplynx.mytexteditor.android
)AndroidManifest.xml
中定义。我究竟做错了什么?感谢。
答案 0 :(得分:1)
它看起来类似于另一个问题ActivityNotFoundException when different package's targetClass in PreferenceScreen
以下是描述解决方法的答案,表明这是框架中的错误:
他建议继承“破损”活动,将继承的代码放在主应用程序项目中。然后在主要清单中按照正常情况引用它。
答案 1 :(得分:0)
在您的清单中更改此内容:
<activity android:name="com.myapplynx.mytexteditor.common.prefs.MyTedAdvancedPreference"
android:label="@string/title_settings"
android:theme="@style/MyApplynxTheme" >
</activity>
到此:
<activity
android:name="MyTedAdvancedPreference"
android:label="@string/title_settings"
android:theme="@style/MyApplynxTheme" >
<intent-filter>
<action android:name="example.action.ACTION_PREF_ACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
你的pref.screen应该是这样的:
<PreferenceScreen android:title="@string/config_cat_advanced" >
<intent android:action="example.action.ACTION_PREF_ACTIVITY" >
</intent>
</PreferenceScreen>
答案 2 :(得分:0)
尝试添加Intent-Filter并提供
行动(com.myapplynx.mytexteditor.common.prefs)。
<application
.....
<activity android:name="com.myapplynx.mytexteditor.common.prefs.MyTedAdvancedPreference"
android:label="@string/title_settings"
android:theme="@style/MyApplynxTheme" >
<intent-filter>
<action android:name="com.myapplynx.mytexteditor.common.prefs" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
....
</application>
并尝试将活动称为
Intent intent=new Intent("com.myapplynx.mytexteditor.common.prefs");//action
intent.startActivity(intent);
希望它能够奏效。