我一直在研究将首选项与我创建的应用程序一起使用。例如:
我的应用程序的一部分需要倒数计时器。此倒计时计时器的默认值应为 8:00(8 分钟或 480000 毫秒)。但是,我需要用户能够将其更改为他们想要的任何值。
在我的研究中,我发现了 Android 内置的 SharedPreferences 功能,但我有点困惑它是如何工作的。
我的想法是该应用程序将寻找共享的偏好,如果它们不存在,则使用默认值。它似乎不起作用。一旦我安装了新应用程序(目前没有共享首选项 XML 文件,所以我认为它只会加载默认值,但我收到空指针错误并且应用程序崩溃。
这是我的相关代码:
long
msSavedMainClock = 0,
msSavedShotClock = 0,
msShotClockStart,
msMainClockStart;
TextView
tvPeriodPrefix,
tvPeriod;
// Create the SharedPreferences object
SharedPreferences prefs = getSharedPreferences("settings", MODE_PRIVATE);
// Create the Preference Editor object
SharedPreferences.Editor prefsEditor = prefs.edit();
@Override
protected void onCreate(Bundle savedInstanceState) {
/******* more code here *******/
// Load the values/defaults from the SharedPreferences
tvPeriodPrefix.setText( prefs.getString("Period_Prefix", getResources().getString(R.string.period)) );
msMainClockStart = prefs.getLong( "Default_Main_Clock", 480000); // 8 minute default
msShotClockStart = prefs.getLong( "Default_Shot_Clock", 24000); // 24 second default
// Initialize other variables
tvPeriod.setText( tvPeriodPrefix + "1" );
/******* rest of my code here *******/
谁能告诉我我做错了什么?