Tôi đã thực sự đấu tranh thông qua việc này. Mới đối với Java/Android. Tôi đang viết ứng dụng đầu tiên của mình và đây là điều đầu tiên đã khiến tôi mất nhiều thời gian hơn một vài ngày tìm kiếm để tìm ra. Dưới đây là các thiết lập: Đó là một BAC tính/uống truy cập:Làm cách nào để nhận được tùy chọn hoạt động trong Android?
Một công thức được sử dụng để tính toán BAC. Đây là forumla:
Bac = ((StandardDrinks/2) * (GenderConstant/Weight)) - (0.017 * Hours);
Vì vậy, bạn có thể thấy, có thể sửa đổi giới tính và cân nặng sẽ tạo ra kết quả chính xác và được cá nhân hóa hơn. Vì vậy, tôi có chúng như là đôi:
double GenderConstant = 7.5; //9 for female
double Weight = 180;
Để thay đổi các biến này, tôi muốn người đó có thể đi vào cài đặt và chọn các giá trị khác nhau. Tôi có những thứ này được thiết lập, nhưng không liên quan đến các biến được hiển thị ở trên vì tôi không thể cho cuộc sống của tôi tìm ra cách. Dưới đây là:
tôi bấm nút menu và điều này bật lên. Tuyệt quá. Tôi sẽ nhấp vào Cài đặt.
Bây giờ, tùy chọn bật lên. Dưới đây là preferences.xml tôi:
<?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>
Onward đến ListPreference weight:
Và đó xuất hiện. Các giá trị được lưu trữ dưới dạng mảng chuỗi trong res/values / arrays.xml. Đây là một mẫu, chỉ là mẫu, trọng lượng:
<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>
Điều này về cơ bản là xa như tôi đã nhận được. Tôi có thể nhấp vào một giá trị, chắc chắn, nhưng nó không thay đổi công thức bởi vì nó không liên kết với các đôi tôi tạo ra trong DrinkingBuddy.java. Tất cả các nội dung được hiển thị trong cài đặt chỉ là các vỏ trống bây giờ, bao gồm cả spinner trên bố cục chính (thời gian mặc định chỉ được đặt thành 1 giờ)
Tôi đã tạo Preferences.java và đã thử thực hiện các kết hợp khác nhau mã được tìm thấy trong các hướng dẫn và tài nguyên trên web nhưng không có kết quả. Ở đây nó được dù sao, đầy nỗ lực thất bại trong việc thực hiện beerPref (các thiết lập tùy chọn để thay đổi bao nhiêu ounce trong bia) tương quan với một biến trong lớp học chính của tôi:
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;
}}
);}
}
Một đầy đủ về hướng dẫn và mẫu mã sẽ được TUYỆT VỜI như tôi chưa tìm thấy bất kỳ hướng dẫn đáng tin cậy ra khỏi đó.
nó có vẻ như bạn có mã vào đây để tiết kiệm một sở thích ... nhưng là của bạn mã cho "công thức" * đọc * từ nơi tùy chọn được lưu? –
Ummm Tôi không nghĩ vậy. Tôi có 2 tệp .java: DrinkingBuddy.java và Preferences.java. Sau đó là bit cuối cùng của mã được hiển thị, trong khi mọi thứ khác nằm trong DrinkingBuddy.java. Một lần nữa, mọi thứ bên dưới dòng "additionalPreferencesFromResource ..." chỉ là một thứ mà tôi đã ném vào đó để cố gắng làm cho nó hoạt động. –
Dưới đây là một số hướng dẫn đã giúp tôi: http://viralpatel.net/blogs/android-preferences-activity-example/ và http://www.brighthub.com/mobile/google-android/articles/116373. aspx – MarkHu