7

我正在实现n层PreferenceActivities 第1层PreferenceActivity是从偏好标题加载的。从偏好标题开始活动

第一个标题创建一个PreferenceFragment设置的片段。其次是浏览器活动(第二个是来自developer.android.com的示例),它打开指定的Url。第三个我想成为PreferenceAtivity的下一个级别,它也会从首选标题中加载。

前两个工作正常,但第三崩溃所不同的应用:

“android.content.ActivityNotFoundException:无活动处理意向{行动= android.intent.action.VIEW DAT = com.mycompany .myapp.ui.MyPreferenceActivity} “

MyPreferenceActivity在清单文件中声明。在main_headers.xml中可能声明的活动是错误的,但是我没有在参考文献中找到任何提示如何正确执行它。尝试了几个变化,他们没有工作。

例1所用: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> 

回答

17

如果你想从你的第三个优先启动一个明确的活动,然后做到这一点:

<intent android:targetPackage="com.mycompany.myapp" 
     android:targetClass="com.mycompany.myapp.ui.MyPreferenceActivity" /> 
+0

我意识到这是一个老问题。你碰巧知道如何指定默认Android包的意图吗?例如'Settings.ACTION_ADD_ACCOUNT'? – Jin 2014-04-01 20:11:34

+0

和我一起工作,谢谢 – 2016-12-31 02:58:15

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); 
0
<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>