android:settingsActivity - 如何获得非标准行为

时间:2013-04-18 12:05:41

标签: android wallpaper

我制作了一个动态壁纸,它有许多复杂的设置。看一下网络上的各种例子,看来在壁纸中设置首选项的标准方法就是有一些像这样的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(如果允许的话)。

1 个答案:

答案 0 :(得分:1)

根据this,您不需要拥有PreferenceActivity,任何活动都可以。

PreferenceActivity是一种设置屏幕的简单方法,但如果您不想使用,则可以自行创建。