2010-05-14 22 views
4

我正在創建一個appwidget,用戶在添加到主屏幕之前應該能夠對其進行配置。對我而言,PreferenceScreen/PreferenceActivity似乎是完美的任務,但這些類背後的意圖似乎是配置一個實際的應用程序。我搜索了,但找不到任何涵蓋此問題的文檔或教程。使用PreferenceScreen/PreferenceActivity配置主屏幕小部件

是否可以使用這些類來配置控件,或者是通過普通視圖配置它的唯一選擇?

感謝您的任何答案!

回答

14

您當然可以使用PreferenceActivity來達到此目的。但是,如果在小部件配置中將其設置爲android:configure活動,則必須執行一些精巧的步驟才能更新小部件。

+0

哇,非常感謝這就是我所說的提示和簡潔的答案!由於我是新來的,我不能爲你的答案投票,但我會在我的聲望時嘗試去做 往上。 週末愉快。 – hanspeide 2010-05-14 12:38:27

+1

標記任何你可以更新鏈接的機會,它似乎指向已經從你的回購 – Rob 2011-08-17 19:17:38

+0

@Rob:其實,現在,我沒有任何配置屏幕的應用程序小部件,對不起。 Twitter改變其認證模式後,該項目被刪除,破壞了代碼。不過,我會編輯問題以刪除鏈接。 – CommonsWare 2011-08-17 19:20:04

1

commonsWare: https://github.com/commonsguy/cw-advandroid/blob/master/AppWidget/LoremWidget/res/xml/widget_provider.xml 您的示例根本沒有使用config-activity,因此當然沒有PreferencesActivity。

只要PreferencesActivities去, 它不適用於setResult(RESULT_CANCELED);在onCreate(9)中,然後在onBackPressed中設置setResult(...) Launcher.java中有深度的有線NullPointerExceptions(88X行) 但是它的確可以工作在Provider.updateAppWidget()和setResult(RESULT_OK,resultValue);的onCreate 然後處理進一步更新在onBackPressed

下剪斷可能有助於太:

onCreate() { 
CheckBoxPreference dark = (CheckBoxPreference)findPreference("xyz"); 
dark.setChecked(false); 
... 
onBackPressed() { 
CheckBoxPreference dark = (CheckBoxPreference)findPreference("xyz"); 
boolean checked = dark.isChecked(); 

...

+0

我今天只看到你的筆記;請使用評論與人聯繫以獲得答案。鏈接是一個已被刪除的不同項目。我現在已經從答案中刪除了鏈接。我很抱歉有任何混淆。 – CommonsWare 2011-08-17 19:21:15