1

这是我的myprefnces.xml

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


  <ListPreference
     android:entries="@array/listOptions"
     android:entryValues="@array/listValues"
     android:key="listpref"
     android:summary="List preference example"
     android:title="List preference" />
 </PreferenceCategory>
</PreferenceScreen>

我输入了 3 个值array.xml

<?xml version="1.0" encoding="utf-8"?>
 <resources>
   <string-array name="listOptions">
     <item>Facebook</item>
     <item>Gmail</item>
     <item>Twitter</item>
     </string-array>

   <string-array name="listValues">
     <item>1 </item>
     <item>2 </item>
     <item>3</item>
   </string-array>
 </resources>

PreferencesActivityTest.class

public class PreferencesActivityTest extends PreferenceActivity {
    public static final String PREF_BEER_SIZE = "listpref";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.my_prefrences);
        Preference beerPref = (Preference) findPreference(PREF_BEER_SIZE);
        beerPref.setOnPreferenceClickListener(new OnPreferenceClickListener() {

            @Override
            public boolean onPreferenceClick(Preference preference) {
                // how will apply function for each facebook twitter and gmail
                return false;

            }
        });
    }
}

我想分享我的应用程序链接 我已经在另一个应用程序中分享了我有这方面的代码但是我在应用条件时遇到问题我们将如何应用我们选择 gmail 或 facebook 或 twitter 的功能意味着在项目上选择这个首选项我是第一次做。

4

1 回答 1

0

您应该使用 OnPreferenceChangelistener 而不是 onPreferenceClickListener。

OnPreferenceClickListener 是在点击首选项之前做一些任务。在 Preferenceclick 中,您将没有什么可比较的,因为它是对视图的单击。不是设置的值

 beerPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
     public boolean onPreferenceChange(Preference pref, Object newValue) {
         final ListPreference listPref = (ListPreference) pref;
         final int idx = listPref.findIndexOfValue((String) newValue);

         //Depending upon idx execute
         return true;
     }
 });
于 2012-08-31T12:18:56.867 回答