0

我正在获取一个ActivityNotFoundException存在并包含在我的应用程序中的活动AndroidManifest.xml

这是我的场景:

我的应用程序项目包是:com.myapplynx.mytexteditor.android.

我的图书馆项目包是com.myapplynx.mytexteditor.common

我的库项目正确包含在我的应用程序项目中,因为我可以在我的应用程序项目中使用库项目中的其他类。

该活动MyTedAdvancedPreference在我的库项目中的 package.json 中找到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?

该活动在我的 applications( com.myapplynx.mytexteditor.android)中定义AndroidManifest.xml。我究竟做错了什么?谢谢。

4

3 回答 3

1

当 PreferenceScreen 中不同包的 targetClass 时,它看起来类似于另一个问题ActivityNotFoundException

这是描述解决方法的答案,表明这是框架中的错误:

他建议从“损坏的”Activity 继承,将继承的代码放在您的主应用程序项目中。然后在您的主清单中正常引用它。

于 2013-10-25T11:33:36.750 回答
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>

并尝试像这样调用 Activity

Intent intent=new Intent("com.myapplynx.mytexteditor.common.prefs");//action
intent.startActivity(intent);

希望它应该工作。

于 2013-10-25T11:37:59.663 回答
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>
于 2013-10-25T11:30:49.327 回答