相关疑难解决方法(0)

如何在触发onPreferenceClick时动态填充ListPreference?

我有一个有偏好活动language作为ListPreference其显示可用的语言列表.我可以在调用onCreate时填充列表,但是当用户点击它时我想填写列表.

this is the java code :

public class SettingsActivity extends PreferenceActivity implements OnPreferenceClickListener {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        try {
            addPreferencesFromResource(R.xml.settings);
        } catch (Exception e) {

        }

    }

    @Override
    public boolean onPreferenceClick(Preference preference) {

        if((preference instanceof ListPreference) && (preference.getKey().equals("language"))){
            ListPreference lp = (ListPreference)preference;
            CharSequence[] entries = { "English", "French" };
            CharSequence[] entryValues = {"1" , "2"};
            lp.setEntries(entries);
            lp.setDefaultValue("1");
            lp.setEntryValues(entryValues);
            return true;
        }
        return false;

    }
}
Run Code Online (Sandbox Code Playgroud)

这是settings.xml(偏好):

<?xml version="1.0" encoding="utf-8"?> …
Run Code Online (Sandbox Code Playgroud)

android android-preferences

30
推荐指数
2
解决办法
3万
查看次数

以编程方式创建ListPreference - 但条目列表为空

我正在尝试以编程方式创建一个ListPreference,我可以做,但是当我选择它时,它的条目列表是空的.我相信我正确设置setEntries()setEntryValues()使用CharSequence阵列,但是当我选择它,它只是空的.

请在下面的ActivitySetting课程中找到.请注意我使用的PreferenceFragments是不使用弃用的方法.但我只有一个PreferenceFragment当前设置为默认值

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    // Display the fragment as the main content.
    getFragmentManager().beginTransaction().replace(android.R.id.content, new PrefsFragment()).commit();
}

public static class PrefsFragment extends PreferenceFragment
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        // Load the preferences from an XML resource
        addPreferencesFromResource(R.xml.settings);

        // Create the new ListPref
        ListPreference customListPref = new ListPreference(getActivity());

        // Get the Preference Category which we want to add the ListPreference …
Run Code Online (Sandbox Code Playgroud)

android listpreference

13
推荐指数
1
解决办法
4105
查看次数