讓Android Preference Summary中實時顯示內容變更


Android中提供的Preference可以保存用戶的喜好設置。在啟明星安卓版員工通訊錄里,有一個地方保存用戶輸入的URL就是用的Preference。

但是Preference默認顯示的是Summary的值。我們希望他們可以顯示用戶輸入的只。

先看一下效果:

如果用戶未輸入,這Summary提示讓用戶輸入

 

如果用戶輸入了,這顯示用戶的輸入值

 

要實現上面的功能,

(1)增加XML配置文件

<EditTextPreference
        android:key="url"
        android:title="please enter url"
    
        >
    </EditTextPreference>

 

(2)執行OnSharedPreferenceChangeListener 接口

public class SettingsFragment extends PreferenceFragment   implements OnSharedPreferenceChangeListener {

    private EditTextPreference url;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.c21preference);
        
        url = (EditTextPreference)getPreferenceScreen().findPreference("url"); 
        
    }

     
    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
        /* get preference */
       
           if(key.equals("url"))
           {
               InitTextSummary(); 
           }
    }
    
    
    public void InitTextSummary()
    {
        
        
        if(url.getText().equals(""))
        {
             url.setSummary("請輸入接口地址,例如 http://demo.dotnetcms.org/worklog/"); 
        }
        else
        {
             url.setSummary(url.getText());
        }
    }
    
    
     @Override
        public void onResume() {
            super.onResume(); 
            
            InitTextSummary();
            getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
        }

        @Override
        public void onPause() {
            getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
            super.onPause();
        }
    

如此即可。

(3)獲取用戶的配置值

 public void Read(View view){ // SharedPreferences settings = getSharedPreferences("c21preference", MODE_PRIVATE); // String txt=settings.getString("ringtone", "xxx"); // Toast.makeText(getApplicationContext(),txt, Toast.LENGTH_SHORT).show();  SharedPreferences settings=PreferenceManager.getDefaultSharedPreferences(this); String txt=settings.getString("url", "xxx"); Toast.makeText(getApplicationContext(),txt, Toast.LENGTH_SHORT).show(); } 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM