Android 从“活动”切换到嵌套首选项屏幕

Android 从“活动”切换到嵌套首选项屏幕,android,android-intent,android-preferences,Android,Android Intent,Android Preferences,如何打开嵌套首选项屏幕,查看活动中的特定首选项(例如通过意图) 例如: <PreferenceScreen ... <!-- opens a subscreen of settings --> <PreferenceScreen android:key="sub_menu_key" android:persistent="false" android:title="Submenu"> ... <Preferenc

如何打开嵌套首选项屏幕,查看活动中的特定首选项(例如通过意图)

例如:

<PreferenceScreen

 ...
<!-- opens a subscreen of settings -->
<PreferenceScreen
    android:key="sub_menu_key"
    android:persistent="false"
    android:title="Submenu">

    ...

    <PreferenceCategory
        android:key="category_key"
        android:title="Category">
     ...

        <Preference
            android:key="tos_key"
            android:title="Terms of Service" />
     ...
    </PreferenceCategory>
</PreferenceScreen>
...
从活动(es:Main活动)可以使用明确的意图

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

Button goToPreference;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    goToPreference = (Button) findViewById(R.id.goToButton);
    goToPreference.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // when you click go to Preference
            Intent intent = new Intent( MainActivity.this, UserSettingsActivity.class);
            startActivity(intent);
        }
    });
}
}
布局:activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="it.uniba.di.ivu.di.sms16.gruppox.examplesettings.MainActivity">

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Go To Preference"
    android:id="@+id/goToButton"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true" />

</RelativeLayout>
settings.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

<PreferenceCategory
    android:title="Lenguage">

    <ListPreference
        android:key="lenguage_preference"
        android:title="Change Lenguage"
        android:summary="Choose yout language"
        android:entries="@array/entries_list_preference2"
        android:entryValues="@array/entryvalues_list_preference2"
        android:dialogTitle="choose favourite language" />

</PreferenceCategory>

<PreferenceCategory
    android:title="Distance">

    <ListPreference
        android:key="distance_preference"
        android:title="Distance"
        android:summary="Change distance"
        android:entries="@array/entries_list_preference"
        android:entryValues="@array/entryvalues_list_preference"
        android:dialogTitle="choose favourite distance" />

</PreferenceCategory>

arrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

<string-array name="entries_list_preference"
    translatable="false">

    <item>2 (km)</item>
    <item>1 (km)</item>
    <item>500 (m)</item>
    <item>200 (m)</item>

</string-array>

<string-array name="entryvalues_list_preference"
    translatable="false">
    <item>2000</item>
    <item>1000</item>
    <item>500</item>
    <item>200</item>
</string-array>

<string-array name="entries_list_preference2"
    translatable="false">
    <item>Italian</item>
    <item>English</item>
    <item>French</item>

</string-array>

<string-array name="entryvalues_list_preference2"
    translatable="false">
    <item>it</item>
    <item>en</item>
    <item>fr</item>

</string-array>

2(公里)
1(公里)
500(米)
200(米)
2000
1000
500
200
意大利人
英语
法语
信息技术
EN
fr

有没有办法直接向“服务条款”开放


我认为您可以参考

,您只需要在onResume()方法中删除指定的首选项类。在我的例子中,我使用的是SwitchPreference类,因此代码类似于-SettingsActivity.class

  public static class PrivacyPreferenceFragment extends PreferenceFragment
    {
       public SwitchPreference switchPreference;

@Override
public void onResume() {
    super.onResume();
    switchPreference = (SwitchPreference) findPreference("privacy_notice_check");
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.pref_privacy);
    setHasOptionsMenu(true);

}
   }
然后在要使用PreferenceFragment值的活动中,只需使用SharedReference对象调用这些值并触发它


如果您需要SharedReference逻辑,请在下面进行评论。

直接转到“服务条款”,我的意思是转到您将看到该首选项的视图。直接移动到首选项屏幕子菜单。但是感谢您的建议,我也会研究一下。我参与了这个偏好活动,以便在switchprefence设置为on时向人们显示隐私通知,否则,如果设置为off,则不显示通知。
  public static class PrivacyPreferenceFragment extends PreferenceFragment
    {
       public SwitchPreference switchPreference;

@Override
public void onResume() {
    super.onResume();
    switchPreference = (SwitchPreference) findPreference("privacy_notice_check");
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.pref_privacy);
    setHasOptionsMenu(true);

}
   }