我正在开发一个应用程序,其中用户在共享首选项中输入一个值,并且正在检索以减去卡路里数。
现在,我的卡路里应用程序硬编码为2000.用户每天的消耗限制为2000。我希望用户能够更改共享首选项消耗的数量,但由于某种原因,它没有被保存。这就是我对它进行硬编码的原因。
PreferenceScreenActivity.java
match
activity_preference.xml
public class PreferenceScreenActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_preference);
// Replace the default view with the preference fragment
getFragmentManager().beginTransaction().replace(R.id.preference_container,
new PreferenceScreenFragment()).commit();
}
public static class PreferenceScreenFragment extends PreferenceFragment
{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.activity_preference);
}
}
}
FragmentHome.JAVA
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="User Settings">
<EditTextPreference
android:title="Daily Calorie Amount"
android:inputType="number"
android:defaultValue="2000"
android:key="@string/prefs_key_daily_calorie_amount"
android:summary="@string/prefs_description_daily_calorie_amount"
/>
</PreferenceCategory>
</PreferenceScreen>
答案 0 :(得分:0)
如我所见,您拥有CaloriesRemain
变量和savePrefs()
方法,但您无法使用varialbe和方法的值。
看,如果您使用PreferenceFragment,它会自动从SharedPreferences保存并加载您的首选项。
如果您需要在代码中使用SharedPreferences中的值,则应使用密钥(@string/prefs_key_daily_calorie_amount
)来请求它们。
目前您使用CaloriesRemain = loadPrefs(formattedRemain, totalCalorie);
,但不应使用formattedRemain
,而应使用密钥@string/prefs_key_daily_calorie_amount
。然后在代码中使用CaloriesRemain
变量。
希望它有所帮助。