从PreferenceScreen开始一个活动

我有一个string列表(存储在数据库中,而不是资源)和
我想让用户编辑这个列表。 这很容易做一个正常的Activity
但在这个应用程序中,该列表应该是user preferences一部分。
基本上它是用户想要使用的句子列表。

由于我想提供一个一致的用户界面,我想添加到首选项屏幕:

 <PreferenceScreen xmlns:android="..."> <!-- Some other categories and preferences here --> <PreferenceScreen android:key="PREF_PDT" android:title="Predefined Texts" android:summary="View and edit the list of predefined texts"> </PreferenceScreen> <!-- Some other categories and preferences here --> <PreferenceScreen> 

现在让我们说,我有一个完全有效的Activity ,允许我编辑数据库中的文本,
我可以做什么,以便当用户点击“PREF_PDT”项目的Activity使用?

我认为我必须对Activity进行一些修改
或创build某种自定义首选项视图?

更新:所以只需要清楚,我不需要'列表'屏幕钩入设置,
我只需要给用户一个印象,他们仍然在应用程序的偏好部分(当然,没有打破导航堆栈)。 否则,他们必须去一个地方编辑一些设置,并去另一个地方编辑文本。 他们希望在“设置”下find一切

更新:我已经从“自定义首选项”屏幕重命名的问题来编辑项目列表,因为现在清楚我正在尝试从PreferenceScreen启动一个活动。 sh404的答案有帮助,但我无法find正确的语法来参考我想要的动作。 也许这是monodroid特定的。 (ActivityNotFoundException)

Solutions Collecting From Web of "从PreferenceScreen开始一个活动"

这样写:

 <Preference android:key="mykey" android:title="TheTitle" android:summary="summary here" > <intent android:action="net.hasnath.android.MyActivity"/> </Preference> 

如果您需要传递意向附加function:

 <Preference android:key="mykey" android:title="TheTitle" android:summary="summary here" > <intent android:action="net.hasnath.android.MyActivity"> <extra android:name="extra_name" android:value="my_value" /> <extra android:name="extra_2_name" android:value="my_value_2"/> </intent> </Preference> 

接下来,你必须在AndroidManifest.xml中声明Activity
或者你可以像这样在他的喜好屏幕中声明意图:

 <intent android:targetPackage="net.hasnath.android" android:targetClass="net.hasnath.android.MyActivity"/> 

这样您就不必对AndroidManifest进行任何更改。

我有同样的问题,但没有我在stackoverflow上search解决scheme解决了我的activitynotfoundexception。

这里是我从这里find的工作解决scheme:

  <PreferenceScreen android:title="@string/title_intent_preference" android:summary="@string/summary_intent_preference"> <intent android:action="your.action.string"/> </PreferenceScreen> 

在manifest.xml中的活动中设置一个意图filter

  <activity ...> <intent-filter> <action android:name="your.action.string"/> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>