2011-02-03 52 views
2

給定此代碼,如何從checkbox-和textpreference中獲取值並將它們存儲在域對象中?PreferenceActivity顯示/編輯域對象的值

public class MonitorPreferences extends PreferenceActivity { 
    private PersistenceManager pm; 
    private Monitor monitor; 
    private boolean mActive; 
    private String mName; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     pm = new PersistenceManager(getApplicationContext()); 
     addPreferencesFromResource(R.xml.monitors_pref); 

     fetchDomainObject(); 
    } 

    private void fetchDomainObject() { 
     monitor = pm.fetchMonitor(getIntent().getLongExtra(SuperListActivity.EXTRA_KEY_MONITOR_ID, -1)); 
    } 

    private void persistDomainObject(Monitor monitor) { 
     pm.persist(monitor); 
    } 
} 

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

    <PreferenceCategory android:title="General"> 
     <CheckBoxPreference 
      android:key="active_chkbox" 
      android:title="Active" 
      android:defaultValue="true" 
      android:persistent="false"/> 
     <EditTextPreference 
      android:key="name_txt" 
      android:dependency="active_chkbox" 
      android:title="Name" 
      android:summary="Enter a name" 
      android:dialogTitle="Enter a name" 
      android:dialogMessage="Enter a name" 
      android:defaultValue="John Doe" 
      android:persistent="false"/> 
    </PreferenceCategory> 
</PreferenceScreen> 

原題:創建具有的外觀和感覺的正常活動PreferenceActivity 我的目標是從活動一起關注一下編輯域對象的變量並感受股票的Android偏好。完成這個最簡單的方法是什麼?

是否可以創建PreferenceActivity並以某種方式修改它以顯示/編輯域對象的值而不是SharedPreferences中的值?

回答

2

當然。只需添加代碼以將值存儲到數據庫中,並且不要忘記在您的首選項xml中使用維度android:persistent=false屬性。

final CheckBoxPreference soundcb = (CheckBoxPreference) findPreference("active_chkbox"); 

而且你可以做很多事情soundcb對象:讀值,設置onClickListeners等。

+0

感謝您的輸入。如何從複選框和文本首選項獲取值?我編輯了問題並添加了一些代碼。 – Holm 2011-02-03 15:55:16