2011-03-04 64 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