从PreferenceScreen启动活动

Tim*_*hyP 12 android android-layout xamarin.android

我有一个字符串列表(存储在数据库中,而不是作为资源),
我想允许用户编辑此列表.这很容易做到正常 Activity,
但在这个应用程序中,列表应该是一部分user preferences.
基本上它是用户想要使用的句子列表.

由于我想提供一致的UI,我想将其添加到首选项屏幕:

<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>
Run Code Online (Sandbox Code Playgroud)

现在让我说我有一个完整的工作Activity,允许我编辑数据库中的文本,
我该怎么做,以便当用户点击'PREF_PDT'项目时Activity使用?

我接受它我将不得不对其进行一些修改Activity
或创建某种自定义的偏好视图?

更新:所以为了清楚,我不需要"列表"屏幕来挂钩设置,
我只需要给用户一个印象,他们仍然在应用程序的首选项部分(不破坏导航堆栈的课程).否则,他们必须到一个地方编辑一些设置并转到另一个地方编辑文本.他们希望在"设置"下找到所有内容

更新:我已经从"自定义首选项"屏幕重命名问题以编辑项目列表,因为现在很清楚我正在尝试从PreferenceScreen启动活动.sh404的答案有帮助,但我找不到正确的语法来引用我想要的活动.也许它是monodroid特有的.(ActivityNotFoundException)

sha*_*256 21

像这样写:

<Preference
    android:key="mykey"
    android:title="TheTitle"
    android:summary="summary here" >
    <intent android:action="net.hasnath.android.MyActivity"/>
</Preference>
Run Code Online (Sandbox Code Playgroud)

如果你需要传递Intent Extras:

<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>
Run Code Online (Sandbox Code Playgroud)

接下来,您必须在AndroidManifest.xml中声明Activity,
或者您可以在首选项屏幕中声明intent,如下所示:

<intent android:targetPackage="net.hasnath.android"
        android:targetClass="net.hasnath.android.MyActivity"/>
Run Code Online (Sandbox Code Playgroud)

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