我正在尝试从preference-header启动一个活动。
我搜索了很多解决方案,但除了这个问题外没有找到:Start activity from preference-headers.
但是在应用它的答案时,我得到了一个新的例外:
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中点回时它会将我带到一个空白片段然后我必须再次点击以返回到SettingsActivity
如何直接从preference-header启动MyActivity或删除后面的空白片段?
修改
我的AndroidManifest.xml
:
<activity
android:name=".MyActivity"
android:label="@string/app_name">
</activity>
任何帮助都将非常感激
答案 0 :(得分:1)
已经很长时间了但是如果有人还在努力解决这个问题,我就这样解决了 在您的首选项头文件中添加此
<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>
在我的情况下,当我将targetPackage与targetClass一起包含时系统最终将两者连接在一起时会导致错误 根据android开发人员指南,targetClass和targetPackage都是intent.setComponent方法的同义词。