2012-08-31 24 views
1

這是我myprefnces.xml如何在Android應用條件onPreferenceClick?

<?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; 

      } 
     }); 
    } 
} 

我想分享我的應用程序鏈接我已經做了在另一個應用程序我有代碼共享爲此,但我有問題與應用條件我們將如何應用功能,我們選擇gmai l或Facebook或Twitter上的意思項目選擇這個我第一次做的prefnces。

回答

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; 
    } 
}); 
+0

感謝您的工作正確... – Anil