2011-03-04 40 views
3

我想添加设置到我创建的动态壁纸。我错过了关于SharedPreferences如何工作的一些非常基础的内容。代码和XML是基于立方体动态壁纸的例子,我无法弄清楚我做错了什么。我的问题是,当我从列表中选择我的动态壁纸时,没有“设置”按钮显示。只显示“Set Wallpaper”按钮。我怀疑我搞砸了XML中的某些东西。无法获取设置按钮来显示动态壁纸

这是一个非常简单的动态壁纸,我只是为了愚弄设置。它所做的就是将背景设置为蓝色或绿色(并且该部分有效)。

我相信什么是相关代码和XML如下:

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.android.BGWallpaper" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="7" /> 
    <uses-feature android:name="android.software.live_wallpaper" /> 

    <application 
     android:icon="@drawable/icon" android:label="@string/AppName"> 

     <service 
      android:icon="@drawable/icon" 
      android:label="@string/AppName" 
      android:name="com.android.BGWallpaper.BlueGreen" 
      android:permission="android.permission.BIND_WALLPAPER" android:debuggable="false"> 
      <intent-filter android:priority="1"> 
       <action android:name="android.service.wallpaper.WallpaperService" /> 
      </intent-filter> 
      <meta-data android:name="android.service.wallpaper" android:resource="@xml/bg" /> 
     </service> 
     <activity 
      android:label="BGSettings" 
      android:name="com.android.BGWallpaper.BGPrefs" 
      android:theme="@android:style/Theme.Light.WallpaperSettings" 
      android:exported="true"> 
     </activity> 
    </application> 
</manifest> 

的preferences.xml:

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" 
     android:title="Title Preference" 
     android:key="BGSettings"> 
    <ListPreference 
      android:key="background" 
      android:title="Background Title" 
      android:summary="Background Summary" 
      android:entries="@array/BackgroundChoices" 
      android:entryValues="@array/BackgroundChoices" /> 
</PreferenceScreen> 

bg.xml

<?xml version="1.0" encoding="utf-8"?> 
<wallpaper 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:thumbnail="@drawable/icon"/> 

BlueGreen。爪哇(壁纸服务)

public class BlueGreen extends WallpaperService 
{ 
    public static final String strSharedPrefs="BGSettings"; 

    @Override 
    public Engine onCreateEngine() 
    { 
     return new BGEngine(); 
    } 

    class BGEngine extends Engine implements SharedPreferences.OnSharedPreferenceChangeListener 
    { 
     private SharedPreferences msPrefs; 

     private final Runnable mDraw = new Runnable() 
     { 
      public void run() 
      { 
       draw(); 
      } 
     }; 

     BGEngine() 
     { 
      msPrefs = BlueGreen.this.getSharedPreferences(strSharedPrefs, MODE_PRIVATE); 
      msPrefs.registerOnSharedPreferenceChangeListener(this); 
      onSharedPreferenceChanged(msPrefs, null); 
     } 
    } 
    // ... 
} 

BGPrefs.java:

public class BGPrefs extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener 
{  
    @Override 
    protected void onCreate(Bundle icicle) 
    { 
     super.onCreate(icicle); 
     getPreferenceManager().setSharedPreferencesName(BlueGreen.strSharedPrefs); 
     addPreferencesFromResource(R.xml.preferences); 
     getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);  
    } 
    // ... 
} 

所以我缺少什么?

此外,我的XML /代码的一部分被自动格式化。有没有办法让它把文本块视为文字,所以它不会格式化它?

回答

10

在你bg.xml ...

<?xml version="1.0" encoding="utf-8"?> 
<wallpaper xmlns:android="http://schemas.android.com/apk/res/android" 
    android:name="something" 
    android:thumbnail="@drawable/icon" 
    android:description="something" 
    android:settingsActivity="com.android.BGWallpaper.BGPrefs"> 
</wallpaper> 

安卓settingsActivity是,你需要设置对动态壁纸的XML文件帕拉姆。

祝你好运:)

+1

谢谢!那样做了。 – jbww 2011-03-04 07:57:11