我正在实施n层PreferenceActivities 第一层PreferenceActivity从preference-headers加载。
第一个标题创建一个PreferenceFragment设置片段。第二个是浏览器活动(第二个是来自developer.android.com的示例),它打开指定的Url。第三个我想成为PreferenceAtivity的下一级,它也将从preference-headers加载。
前两个工作正常,但第三个是崩溃的应用程序,但例外:
“android.content.ActivityNotFoundException:找不到处理Intent的活动{act = android.intent.action.VIEW dat = com.mycompany.myapp.ui.MyPreferenceActivity} “
清单文件中声明的MyPreferenceActivity。可能在main_headers.xml中声明活动是错误的,但我没有在参考文献中找到任何提示如何更正。尝试了几种变化,它们没有用。
我使用的示例:http://developer.android.com/reference/android/preference/PreferenceActivity.html
任何想法为什么它对我不起作用或如何调用下一个PreferenceActivity? 基本上我只需要从头开始一个活动,这应该很简单,但我错过了一些东西。
public class MySettings extends PreferenceActivity
{
@Override
public void onBuildHeaders(List<Header> target)
{
loadHeadersFromResource(R.xml.main_headers, target);
}
}
main_headers.xml:
<?xml version="1.0" encoding="utf-8"?>
<preference-headers
xmlns:android="http://schemas.android.com/apk/res/android" >
<header android:title="Custom Settings"
android:fragment="com.mycompany.myapp.ui.SettingsFragment" />
<header android:title="Intent"
android:summary="Launches an Intent.">
<intent android:action="android.intent.action.VIEW"
android:data="http://www.android.com" />
</header>
<header android:title="Another Preference Activity">
<intent android:action="android.intent.action.VIEW"
android:data="com.mycompany.myapp.ui.MyPreferenceActivity" />
</header>
</preference-headers>
答案 0 :(得分:17)
如果您想从第三个偏好开始显式活动,请执行以下操作:
<intent android:targetPackage="com.mycompany.myapp"
android:targetClass="com.mycompany.myapp.ui.MyPreferenceActivity" />
答案 1 :(得分:1)
<header android:title="Intent"
android:summary="Launches an Intent.">
<intent android:targetPackage="com.mycompany.myapp"
android:targetClass="com.mycompany.myapp.ui.MyPreferenceActivity" /></header>
并在mainfest文件中添加以下代码
<activity android:name=".activities.MyActivity"
android:label="@string/my_activity_title"
android:theme="@android:style/Theme.Black.NoTitleBar">
<intent-filter>
<action android:name="com.example.myapp.activities.MyActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
答案 2 :(得分:0)
如果您使用java创建首选项,那么您可以通过
获得相同的结果PreferenceScreen editPhoneNumbersScreen = getPreferenceManager().createPreferenceScreen(mContext);
editPhoneNumbersScreen.setTitle(getResources().getString(R.string.change_add_emergency_numbers));
editPhoneNumbersScreen.setSummary(getResources().getString(R.string.summary_add_no));
Intent i = new Intent(getApplicationContext(),TargetActivity.class);
i.putExtra("change numbers", true);
editPhoneNumbersScreen.setIntent(i);