2017-01-10 3 views
0

Für die Anwendung, an der ich arbeite, brauche ich einen Einstellungsbildschirm, der über eine EditTextPreference, SwitchPreference und eine VolumePreference verfügt. Ich verwende die VolumePreference, weil ich eine Einstellung benötige, die mit einem Schieberegler eingestellt ist, und VolumePreference war die einzige, die ich finden konnte, die die Rechnung erfüllte. Hier ist meine Präferenz XML:So erhalten Sie den Einstellungswert von VolumePreference

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 

<EditTextPreference 
    android:capitalize="words" 
    android:defaultValue="@string/pref_default_channel" 
    android:inputType="number" 
    android:key="pref_channel" 
    android:selectAllOnFocus="true" 
    android:singleLine="true" 
    android:title="@string/pref_title_channel" 
    android:summary="@string/pref_summary_channel"/> 


<SwitchPreference 
    android:key="pref_customVol" 
    android:title="@string/pref_title_custom_vol" 
    android:summary="@string/pref_summary_custom_vol" 
    android:defaultValue="false" /> 

<VolumePreference 
    android:name="Volume Preference" 
    android:title="Notification Volume" 
    android:summary="Set your notification volume, so you will be notified when your Seahorse is almost finished running" 
    android:key="pref_notifVolPref" 
    android:dependency="pref_customVol"/> 

Ich bin in der Lage, den Wert durch die SwitchPreference leicht von gemeinsamen Präferenzen einstellen zu bekommen, mit dem Code:

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); 
    boolean customVol = sharedPref.getBoolean("pref_customVol", false); 

Allerdings, wenn ich versuche, Um den Wert aus meiner VolumePreference zu erhalten, wird immer der Standardwert -1 zurückgegeben. Hier ist der Code, den ich verwende, um die Lautstärke Präferenz zu erhalten:

Bin ich die VolumePreference falsch? Muss ich eine eigene benutzerdefinierte Einstellung erstellen, um eine Slider-Einstellung anzuzeigen? Hat jemand dieses Problem schon einmal gehabt? Dank

Antwort

1
  • ersten erstreckt PreferenceActivity

  • zweite in dieser zu onCreate hinzuzufügen()

    addPreferencesFromResource (R.xml.account_preferences);

    Preference checkPreference = getPreferenceScreen().findPreference("checkbox_contacts_sync"); 
    Preference.OnPreferenceChangeListener lis1 = new Preference.OnPreferenceChangeListener() 
    { 
        @Override 
        public boolean onPreferenceChange(Preference preference, Object o) 
        { 
         Toast.makeText(SystemManager.getAppContext(), "yess", Toast.LENGTH_LONG).show(); 
         return true; 
        } 
    }; 
    checkPreference.setOnPreferenceChangeListener(lis1); 
    

und das diese

<ListView 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:visibility="visible" 
       android:id="@android:id/list"> 
    </ListView> 

Oder in Haupttätigkeit Verwendung Layout hinzuzufügen.

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
     SharedPreferences.OnSharedPreferenceChangeListener shListener = new SharedPreferences.OnSharedPreferenceChangeListener() 
     { 
      @Override 
      public void onSharedPreferenceChanged(SharedPreferences sharedPref, String key) 
      { 
       Assistance.print("change"); 
       Toast.makeText(SystemManager.getAppContext(),"ohh",Toast.LENGTH_LONG).show(); 
      } 
     }; 
     sharedPreferences.registerOnSharedPreferenceChangeListener(shListener); 
Verwandte Themen