我正在进行共享偏好活动,用户可以在其中更改有关它们的一些数据,并在firebase数据库中删除更改
我不明白的是,当一个值被更改时,首选项活动就会完成
我的代码如下
public class PatientPersonalInformation extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener{
private LoadingDialog dialog;
private FirebaseUserGrabber userGrabber;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.patientpersonal);
userGrabber = new FirebaseUserGrabber(this);
}
@SuppressWarnings("deprecation")
@Override
protected void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
@SuppressWarnings("deprecation")
@Override
protected void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@SuppressWarnings("deprecation")
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
switch (s) {
case "emergencynumber":
userGrabber.setEmergencyNumber(sharedPreferences.getString(s, ""));
break;
case "useCoupons":
userGrabber.setCopounsUsage(sharedPreferences.getBoolean(s, false), false);
break;
}
}
}
userGrabber就是那个代码
ref.child(path).setValue(data).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
//just toast
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
//just Toast
}
});;
根据调试,如果此行成功,则会导致活动关闭,否则不会发生任何事情
编辑1
我想到的是,活动本身并没有被关闭,只是其他活动被打开(没有为此编写代码)而且偏好活动隐藏在后面,看起来像firebase监听器被激活并激活它的活动(我正在使用listenerForSingleValueEvent())+我试图更改没有连接到它的监听器的字段,同样的情况也是如此
任何人都可以解释,谢谢。