私は単純な目覚まし時計アプリを開発しており、アラームの設定中に OnSharedPreferenceChangeListener を使用して変更を表示しています。以下に含まれるコード。問題: アプリは次の行でクラッシュします。
//SharedPreferences etPrefs=PreferenceManager.getDefaultSharedPreferences(getBaseContext());
そして、私はその理由を見つけることができません。奇妙なことに、すべてが大学で機能しましたが、同じバージョンの Eclipse を使用して自宅でプロジェクトを開くと、前述の行 o_0 でクラッシュします。何か提案はありますか?
public class NewAlarm extends PreferenceActivity implements
OnSharedPreferenceChangeListener {
private Button btnCancel, btnSave;
private TimePicker tp;
private TextView txtDate;
private DigitalClock dc;
private SimpleDateFormat sdf = new SimpleDateFormat("EEEE, dd MMM");
SharedPreferences getPrefs = PreferenceManager
.getDefaultSharedPreferences(getBaseContext());
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.new_alarm_prefs);
setContentView(R.layout.new_alarm);
setupRefs();
tp.setIs24HourView(true);
dc.setBackgroundColor(Color.parseColor("#14B909"));
dc.setTextColor(Color.parseColor("#FFFFFF"));
txtDate.setText("Today is: " + sdf.format(new Date()));
}
public void setupRefs() {
btnCancel = (Button) findViewById(R.id.btnCancelNewAlarm);
txtDate = (TextView) findViewById(R.id.txtDate);
tp = (TimePicker) findViewById(R.id.tp);
dc = (DigitalClock) findViewById(R.id.dc);
}
@Override
protected void onResume() {
super.onResume();
getPrefs.registerOnSharedPreferenceChangeListener(this);
onSharedPreferenceChanged(getPrefs, "Repeat_PREFS");
onSharedPreferenceChanged(getPrefs, "et_PREFS");
btnCancel.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
finish();
}
});
btnSave = (Button) findViewById(R.id.btnSaveNewAlarm);
btnSave.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
}
});
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
getPrefs.unregisterOnSharedPreferenceChangeListener(this);
}
public void onSharedPreferenceChanged(SharedPreferences getPrefs, String key) {
Preference pref = findPreference(key);
if (pref instanceof ListPreference) {
ListPreference listPref = (ListPreference) pref;
pref.setSummary(listPref.getEntry().toString());
}
if (pref instanceof EditTextPreference) {
EditTextPreference etPref = (EditTextPreference) pref;
pref.setSummary(etPref.getText());
}
}
}