我制作了一个动态壁纸,它有许多复杂的设置。看一下网络上的各种例子,看来在壁纸中设置首选项的标准方法就是有一些像这样的xml:
<wallpaper xmlns:android="http://schemas.android.com/apk/res/android"
android:thumbnail="@drawable/my_icon"
android:description="@string/wallpaper_description"
android:settingsActivity="com.mycompany.mywallpaper.MyWallpaperSettings"
/>
MyWallpaperSettings
是这样定义的类:
public class MyWallpaperSettings extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener
...与
@Override
protected void onCreate(Bundle blah)
{
super.onCreate(blah);
getPreferenceManager().setSharedPreferencesName(MyWallPaper.SHARED_PREFS_NAME);
addPreferencesFromResource(R.xml.my_settings);
getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
这一切都像宣传的那样有效,但看起来相当粗糙。我注意到一些壁纸设置的外观和感觉要复杂得多,或者看起来完全不像标准设置屏幕,有些会弹出一个对话框,其上的按钮是指向网站的链接。我想知道如何实现这一目标。这是关于在my_settings.xml中使用更好的xml,还是android:settingsActivity = ..指向不是PreferenceActivity的东西,而只是一个普通的活动?或者也许oncreate中的代码需要看起来不同 - 我只是不确定我应该偏离示例。
查看developer.android.com,它说“这是一个活动的基类,用于向用户显示首选项层次结构。” - 这听起来像我被限制在一系列我可以做的事情......这就是为什么我在试图推动PreferenceActivity内部可以做的限制和使android:settingsActivity=
指向某事物之间的分歧根本就不是PreferenceActivity(如果允许的话)。
答案 0 :(得分:1)
根据this,您不需要拥有PreferenceActivity,任何活动都可以。
PreferenceActivity是一种设置屏幕的简单方法,但如果您不想使用,则可以自行创建。