我真的很苦恼。对Java / Android不熟悉。我正在编写我的第一个应用程序,这是让我花费了比搜索多几天的时间才能弄清楚的第一件事情。这是设置:这是BAC计算器/饮料计数器:
使用公式来计算BAC。这是公式:
Bac = ((StandardDrinks / 2) * (GenderConstant / Weight)) - (0.017 * Hours);
所以你可以看到,能够修改性别和体重将会产生更准确和个性化的结果。所以我把它们设为双精度浮点数:
double GenderConstant = 7.5; //9 for female
double Weight = 180;
为了更改这些变量,我希望用户能够进入设置并选择不同的值。我已经设置好了这些内容,但由于我无法想出如何链接到上面显示的变量,所以它们没有被链接。以下是它们的截图:
<?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>
接下来看一下“weight ListPreference”:
这就是它的样子。这些值以字符串数组的形式存储在 res/values/arrays.xml 中。这里是一个示例,只包含重量的选项:
<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>
这基本上是我已经做到的程度。我可以点击一个值,但它不会更改公式,因为它与我在DrinkingBuddy.java中创建的双倍数没有关联。现在所有在设置中显示的内容都只是空壳,包括主布局上的微调器(默认时间仅设置为1小时)。我确实创建了一个Preferences.java并尝试实现从教程和网络资源中找到的各种代码组合,但无济于事。这里面充满了失败的尝试,试图使beerPref(更改啤酒中盎司数的设置选项)与我的主类中的变量相关联。
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;
}}
);}
}
提供一份完整的教程和示例代码会非常棒,因为我还没有找到任何可靠的指南。