安卓:如何从首选项标题启动活动



我正试图从首选项标头启动一个活动。

我搜索了很多解决方案,但除了这个问题没有找到:从首选项标题开始活动。

但当应用它的答案时,我得到了一个新的例外:

android.content.ActivityNotFoundException: Unable to find explicit activity class {com.package.myapp/com.package.myapp.MyActivity}; have you declared this activity in your AndroidManifest.xml?

这是我的代码:

<header
    android:icon="@drawable/ic_contacts"
    android:title="@string/menuOptionContact">
    <intent android:targetPackage="com.package.myapp"
        android:targetClass="com.package.myapp.MyActivity" />
</header>

我尝试将代码更改为许多这样的形式:android:targetClass="MyActivity"

或者android:targetClass=".MyActivity"

所有人都给了我相同的异常

我试着从相应的片段内部开始,如下所示:

<header
    android:fragment="com.package.myapp.SettingsActivity$ContactPreferenceFragment"
    android:icon="@drawable/ic_contacts"
    android:title="@string/menuOptionContact">
</header>

在我的碎片上创建我放:

  startActivity(new Intent(getActivity(), MyActivity.class));

它启动活动,但当我从MyActivity点击返回时,它会将我带到一个空白片段,然后我必须再次点击返回设置活动

如何从首选项标题直接启动MyActivity,或者在后台点击中清除空白片段?

编辑

我的AndroidManifest.xml:

   <activity
        android:name=".MyActivity"
        android:label="@string/app_name">
    </activity>

任何帮助都将不胜感激

这已经花了很长时间,但如果有人仍在试图处理这个问题,我就这样解决了在您的首选项头文件中添加此

<header
android:title="@string/menuOptionContact">
    <intent android:action="your custom string"
      android:targetClass="com.package.myapp.MyActivity"/>
</header>

在您的清单文件中包括以下内容:

<activity android:name=".activity.MyActivity" 
              android:label="@string/my_activity_title"
              android:theme="@android:style/Theme.Black.NoTitleBar">
        <intent-filter>
           <action android:name="your custom string" />
           <category android:name="android.intent.category.DEFAULT" />
       </intent-filter>
    </activity>

在我的情况下,当我在targetClass旁边包含targetPackage时,会导致错误,系统最终会将两者连接在一起根据android开发者指南,targetClass和targetPackage都是intent.setComponent方法的同义词。

最新更新