【发布时间】:2011-08-18 03:20:14
【问题描述】:
我正在创建一个 appwidget,用户应该能够在将其添加到主屏幕之前对其进行配置。对我来说,PreferenceScreen/PreferenceActivity 似乎非常适合这项任务,但这些类背后的意图似乎是配置一个实际的应用程序。我已经搜索过,但找不到任何涵盖此问题的文档或教程。
是否可以使用这些类来配置小部件,还是只能通过普通视图来配置它?
感谢您的任何回答!
【问题讨论】:
标签: android
我正在创建一个 appwidget,用户应该能够在将其添加到主屏幕之前对其进行配置。对我来说,PreferenceScreen/PreferenceActivity 似乎非常适合这项任务,但这些类背后的意图似乎是配置一个实际的应用程序。我已经搜索过,但找不到任何涵盖此问题的文档或教程。
是否可以使用这些类来配置小部件,还是只能通过普通视图来配置它?
感谢您的任何回答!
【问题讨论】:
标签: android
您当然可以为此使用PreferenceActivity。但是,如果您在小部件配置中将其设置为 android:configure 活动,则您必须做一些花哨的工作才能更新小部件。
【讨论】:
commonsWare: https://github.com/commonsguy/cw-advandroid/blob/master/AppWidget/LoremWidget/res/xml/widget_provider.xml 您的示例根本不使用配置活动,因此肯定没有 PreferencesActivity。
就 PreferencesActivities 而言, setResult(RESULT_CANCELED) 不起作用;在 onCreate(9 中,然后在 onBackPressed 中设置结果(...)。 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();
...
【讨论】: