Child pages
  • SharedPreferences i/o probléma

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

Sziasztok,

van egy preferences.xml-em, a releváns töredék:

Code Block
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent" >
  <PreferenceCategory android:title="Időbeállítások" >
    <ListPreference
      android:defaultValue="15"
      android:entries="@array/listMinutesOffset"
      android:entryValues="@array/listMinutesOffsetValues"
      android:key="iMinutesOffset"
      android:title="Időbeosztás percekben" 
      android:summary="a legkisebb választhatő időköz" />

A @array/listMinutesOffset ::= {10perc,15 perc,...}, a  @array/listMinutesOffsetValues ::= {10,15,...}

Egy teljesen szimpla 3 soros Activityvel keztelem a preferences képernyőt:

Code Block
public class Preferences extends PreferenceActivity {
	@Override
	protected void onCreate( Bundle savedInstanceState ) {
		super.onCreate( savedInstanceState );
		addPreferencesFromResource( R.xml.preferences );
	}
 
/* ide kellene valami konverziós izé? */
}
 
public class Prefs {
  private SharedPreferences prefs = null;
  public int iMinutesOffset; // offset start of new appointment
  public Prefs( Context ctx )  {
    prefs = PreferenceManager.getDefaultSharedPreferences( ctx );
    Load();
  }
}

A kérdésem az, hogy hogyan lehet szabályozni azt, hogy a preferences.xml-ben felsorolt tagok milyen adattípusúak legyenek? A fenti kód ugyanis az iMinutesOffset értéket csak String-ként hajlandó beolvasni, ha int-ként próbálom az .edit(), aztán -commit() kiírni, utána cast hibát kapok.

Ezexerint pl. a putInt/getInt metódusok csak custom értékek tárolására használhatók? 

Köszönöm