Realmente he estado luchando con esto. Nuevo en Java/Android. Estoy escribiendo mi primera aplicación y esta es la primera cosa que me ha tomado más de un par de días de búsqueda para averiguarlo. Aquí está la disposición: Es un contador de la calculadora de BAC/bebida:¿Cómo obtengo preferencias para trabajar en Android?
Una fórmula se utiliza para calcular la tasa de alcoholemia. Aquí está la forumla:
Bac = ((StandardDrinks/2) * (GenderConstant/Weight)) - (0.017 * Hours);
Así como se puede ver, ser capaz de modificar el sexo y el peso va a producir resultados más precisos y personalizados. Así que les tengo como dobles:
double GenderConstant = 7.5; //9 for female
double Weight = 180;
Para cambiar estas variables Me gustaría que la persona sea capaz de entrar en la configuración y elegir valores diferentes. Tengo estas cosas configuradas, pero no están vinculadas a las variables que se muestran arriba porque no puedo, por la vida de mí, descubrir cómo. Aquí están:
pulsar el botón de menú y esto aparece. Estupendo. Haré clic en Configuración.
Ahora las preferencias aparece. Aquí es mi preferences.xml:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="Personal Settings">
<ListPreference
android:title="Gender"
android:summary="Verify or deny the presence of a Y chromosome."
android:key="genderPref"
android:defaultValue="male"
android:entries="@array/genderArray"
android:entryValues="@array/genderValues" />
<ListPreference
android:title="Weight"
android:summary="How much the planet pulls on you, in pounds."
android:key="weightPref"
android:defaultValue="180"
android:entries="@array/weightArray"
android:entryValues="@array/weightValues" />
</PreferenceCategory>
<PreferenceCategory android:title="Drink Settings">
<ListPreference
android:title="Beer Size"
android:summary="The volume of your beer, in ounces."
android:key="beerPref"
android:defaultValue="12"
android:entries="@array/beerArray"
android:entryValues="@array/beerValues" />
<ListPreference
android:title="Shot Size"
android:summary="The volume of your shot, in ounces."
android:key="shotPref"
android:defaultValue="1.5"
android:entries="@array/shotArray"
android:entryValues="@array/shotValues" />
<ListPreference
android:title="Wine Size"
android:summary="The volume of your wine, in ounces."
android:key="winePref"
android:defaultValue="5"
android:entries="@array/wineArray"
android:entryValues="@array/wineValues" />
</PreferenceCategory>
</PreferenceScreen>
Adelante a la ListPreference peso:
Y que aparece. Los valores se almacenan como matrices de cadenas en res/values / arrays.xml. Aquí hay una muestra, solo de las de peso:
<string-array name="weightArray">
<item>120 lbs</item>
<item>150 lbs</item>
<item>180 lbs</item>
<item>210 lbs</item>
<item>240 lbs</item>
<item>270 lbs</item>
</string-array>
<string-array name="weightValues">
<item>120</item>
<item>150</item>
<item>180</item>
<item>210</item>
<item>240</item>
<item>270</item>
</string-array>
Esto es básicamente lo más lejos que he llegado. Puedo hacer clic en un valor, claro, pero no cambia la fórmula porque no está vinculado con los dobles que creé en DrinkingBuddy.java. Todas las cosas que se muestran en la configuración son solo conchas vacías por ahora, incluido el ruteador en el diseño principal (el tiempo predeterminado es solo 1 hora)
Creé un Preferences.java y he intentado implementar varias combinaciones de código encontrado en tutoriales y recursos en la web, pero fue en vano. Aquí está de todos modos, llena de intentos fallidos de hacer beerPref (la opción de configuración para cambiar la cantidad de onzas en la cerveza) se correlacionan con una variable en mi clase principal:
package com.dantoth.drinkingbuddy;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.Preference.OnPreferenceClickListener;
public class Preferences extends PreferenceActivity {
public static final String PREF_BEER_SIZE = "PREF_BEER_SIZE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
//Get the custom preference
Preference beerPref = (Preference) findPreference("beerPref");
beerPref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
SharedPreferences customSharedPreference = getSharedPreferences("myCustomSharedPrefs", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = customSharedPreference.edit();
editor.commit();
return true;
}}
);}
}
un lleno en el tutorial y código de ejemplo sería IMPRESIONANTE ya que todavía tengo que encontrar guías confiables por ahí.
parece que tiene código aquí para salvar una preferencia ... pero es su código para "la fórmula" * leyendo * del lugar donde se guarda la preferencia? –
Ummm No lo creo. Tengo 2 archivos .java: DrinkingBuddy.java y Preferences.java. Este último es el último fragmento de código que se muestra, mientras que todo lo demás está en DrinkingBuddy.java. Una vez más, todo lo que está por debajo de la línea que "agregaPreferenciasFromResource ..." es una porquería que lancé allí para tratar de que funcione. –
Aquí hay algunos tutoriales que me han ayudado: http://viralpatel.net/blogs/android-preferences-activity-example/ y http://www.brighthub.com/mobile/google-android/articles/116373. aspx – MarkHu