Android 是否可以将PreferenceFragment自动向下滚动到所需的(设置)条目?

Android 是否可以将PreferenceFragment自动向下滚动到所需的(设置)条目?,android,android-fragments,android-preferences,Android,Android Fragments,Android Preferences,当需要在首选项中执行特定的用户交互时,我正在使用活动中的startActivity(新意图(这个,setingsactivity.class))调用我应用程序的首选项片段。 我认为最好向下滚动,以达到所涉及的偏好 我找到了有关如何将视图滚动到ScrollViews和ListViews的解决方案,但与PreferenceFragments无关 我的首选项如下所示: public class SettingsActivity extends Activity { @Override

当需要在首选项中执行特定的用户交互时,我正在使用
活动中的
startActivity(新意图(这个,setingsactivity.class))
调用我应用程序的
首选项片段。
我认为最好向下滚动,以达到所涉及的偏好

我找到了有关如何将视图滚动到
ScrollView
s和
ListView
s的解决方案,但与
PreferenceFragment
s无关

我的首选项如下所示:

public class SettingsActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // ...

        PreferenceManager.setDefaultValues(this, R.xml.settings, false);

        getFragmentManager().beginTransaction()
            .replace(android.R.id.content, new SettingsFragment())
            .commit();
    }

    public static class SettingsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener {

        //preferences:
        private Preference p
        // [...]

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

            //preference click listeners...
            p = (Preference) findPreference("PR_NAME");
            p.setOnPreferenceClickListener(new OnPreferenceClickListener() {

                public boolean onPreferenceClick(Preference preference) {
                    // ...
                    return true;
                }
            });
            // [...]
        }
    }
}

谢谢你的建议。是的,这是可能的,但它很粗糙,所以也不推荐。它假定首选项由id==android.R.id.list的ListView支持,因此当您引用该ListView时,可以调用setSelection(position)

在首选项屏幕中滚动(设置/首选项),将其用于android API 24.1+或


嘿,陌生人!谢谢你的突然点击。看看这个看看这个谢谢,或多或少我在想什么。。。你能提供更多的细节吗?与此同时,我将继续我的研究并发布任何更新。好吧,只需使用findviewbyd(android.R.id.list)并将结果转换为ListView
ListView lv=(ListView)getActivity().findviewbyd(android.R.id.list),或者不将
getActivity()
放入活动
OnCreate()
,返回null。因此,也许这不是正确的答案……正如我所说的,它很粗糙,我用PreferenceActivity对它进行了测试,它确实有效,只需将
公共类设置活动扩展活动
更改为
公共类设置活动扩展首选活动
,findViewById返回非空。伟大的现在我必须找出为什么
lv.smoothScrollToPosition(9)
没有任何作用无论出于何种原因,如果您的pref是动态创建的,那么这似乎不起作用。
public void scrollToPreference (String key)