我正试图从首选项标头启动一个活动。
我搜索了很多解决方案,但除了这个问题没有找到:从首选项标题开始活动。
但当应用它的答案时,我得到了一个新的例外:
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方法的同义词。