如何在Preference上应用条件点击android?

时间:2012-08-31 11:44:11

标签: java android

这是我的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意味着项目选择此优先顺序我第一次做。

1 个答案:

答案 0 :(得分: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;
     }
 });