Android 如何向SettingsActivity模板添加按钮?

Android 如何向SettingsActivity模板添加按钮?,android,android-layout,settings,Android,Android Layout,Settings,我正在Android上开发一个设置活动,我在模板上开发了一个,做了一些调整,效果很好。但我想在结尾加一个按钮。我的xml现在是这样的: <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <SwitchPreference android:defaultValue="true" android:key="gravacao_baby_n

我正在Android上开发一个设置活动,我在模板上开发了一个,做了一些调整,效果很好。但我想在结尾加一个按钮。我的xml现在是这样的:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <SwitchPreference
        android:defaultValue="true"
        android:key="gravacao_baby_near"
        android:summaryOff="Quando o dispositivo estiver fora da zona segura, reproduzir aúdio gravado"
        android:summaryOn="Quando o dispositivo estiver fora da zona segura, reproduzir aúdio gravado"
        android:title="Habilitar reprodução da gravação" />

    <EditTextPreference
        android:capitalize="words"
        android:defaultValue="Informações de emergência"
        android:inputType="textMultiLine"
        android:key="texto_tag"
        android:maxLines="10"
        android:selectAllOnFocus="true"
        android:singleLine="false"
        android:title="Texto exibido por Tag" />

    <ListPreference
        android:defaultValue="10"
        android:entries="@array/settings_list_preference_titles"
        android:entryValues="@array/settings_list_preference_values"
        android:key="distancia_max_permitida"
        android:negativeButtonText="@null"
        android:positiveButtonText="@null"
        android:title="Distância aproximada máxima permitida" />

</PreferenceScreen>
我尝试在最后一个ListPreference之后添加以下代码,但它表示此处不允许:

<Button
    android:id="@+id/gravarTag"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/gravarTag"
    android:textAllCaps="false" />

如何以正确的方式或简单的方式执行此操作?

添加父线性布局,然后添加首选项屏幕,按钮子项

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:height="match_parent"
android:width="match_parent>
<PreferenceScreen 

    <SwitchPreference
        android:defaultValue="true"
        android:key="gravacao_baby_near"
        android:summaryOff="Quando o dispositivo estiver fora da zona segura, reproduzir aúdio gravado"
        android:summaryOn="Quando o dispositivo estiver fora da zona segura, reproduzir aúdio gravado"
        android:title="Habilitar reprodução da gravação" />

    <EditTextPreference
        android:capitalize="words"
        android:defaultValue="Informações de emergência"
        android:inputType="textMultiLine"
        android:key="texto_tag"
        android:maxLines="10"
        android:selectAllOnFocus="true"
        android:singleLine="false"
        android:title="Texto exibido por Tag" />

    <ListPreference
        android:defaultValue="10"
        android:entries="@array/settings_list_preference_titles"
        android:entryValues="@array/settings_list_preference_values"
        android:key="distancia_max_permitida"
        android:negativeButtonText="@null"
        android:positiveButtonText="@null"
        android:title="Distância aproximada máxima permitida" />

</PreferenceScreen>

<Button
    android:id="@+id/gravarTag"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/gravarTag"
    android:textAllCaps="false" />
</LinearLayout>

您可以在首选项屏幕中添加按钮作为首选项

<Preference android:title="@string/gravarTagBtn"
                android:key="gravarTag"
android:widgetLayout="@layout/btn_pref"
                android:summary="This is my button"/>
和onCreate方法

Preference button = findPreference("gravarTag");
button.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
                @Override
                public boolean onPreferenceClick(Preference preference) {   
                    //code for what you want it to do   
                    return true;
                }
            });

如果有效的话,标记它接受:谢谢,我从复制的那一个得到了它,但这总结了我必须做的事情。非常感谢!这是一个很好的逃离,但我现在的活动有问题。E/AndroidRuntime:原因:java.lang.ClassNotFoundException:未找到类android.preference.LinearLayout
Preference button = findPreference("gravarTag");
button.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
                @Override
                public boolean onPreferenceClick(Preference preference) {   
                    //code for what you want it to do   
                    return true;
                }
            });