返回信息流在使用SharedPreferences settings = getSharedPreferences("test",0)来得到一个getSharedPreferences对象,不过getSharedPreferences()这个方法在接口SharedPreferences中是一个抽象的方法啊,那么说明调用的就不是SharedPreferences接口中的getSharedPreferences()方法,百度一下是这么说滴,
getSharedPreferences是android.content.ContextWrapper类中的方法,不是SharedPreferences接口类中的。
getSharedPreferences的原型:
@Override
public SharedPreferences getSharedPreferences(String name, int mode) {
return mBase.getSharedPreferences(name, mode);
}
我顿时晕了,SharedPreferences 接口和ContextWrapper类只是都继承了Content这个类,为什么就能调用getSharedPreferences()这个方法呢?
真是太费解了,真心跪求大牛解答哇
这是一条镜像帖。来源:北邮人论坛 / java / #25676同步于 2013/5/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
【求助大牛】关于Android SharedPreferences存储问题
happy1100
2013/5/27镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
接口怎么可以继承类,我的理解是你应该是在activity中调用getSharedPreferences()这个方法,所以写的时候隐藏了当前activity的对象名称,而activity祖上有你所说的ContextWrapper类,所以结论应该是activity某个祖先实现了SharedPreferences接口所以你当前能直接调用getSharedPreferences()
getSharedPreferences("test",0);
一般常用的应该是context.getSharedPreferences("test",0); 或者如楼上所说在Activity类中的成员函数里调用this.getSharedPreferences("test",0); (this.在这里可以省略,就成了你原文中写的形式)
你如果有SDK Source的话可以自己看下继承关系,Activity是继承自android.view.ContextThemeWrapper,而android.view.ContextThemeWrapper正式继承自android.content.ContextWrapper,所以Activity是可以调用getSharedPreferences的;至于android.content.Context则是最祖上的抽象类,android.content.ContextWrapper是继承自它的,android.content.Context其中也有getSharedPreferences方法,所以也可以调用~
【 在 happy1100 的大作中提到: 】
: 在使用SharedPreferences settings = getSharedPreferences("test",0)来得到一个getSharedPreferences对象,不过getSharedPreferences()这个方法在接口SharedPreferences中是一个抽象的方法啊,那么说明调用的就不是SharedPreferences接口中的getSharedPreferences()方法,百度一下是这么说滴,
: getSharedPreferences是android.content.ContextWrapper类中的方法,不是SharedPreferences接口类中的。
: getSharedPreferences的原型:
: ...................
灰常感谢,说的很清楚呀,大牛···
【 在 tonyjansan 的大作中提到: 】
: getSharedPreferences("test",0);
: 一般常用的应该是context.getSharedPreferences("test",0); 或者如楼上所说在Activity类中的成员函数里调用this.getSharedPreferences("test",0); (this.在这里可以省略,就成了你原文中写的形式)
: 你如果有SDK Source的话可以自己看下继承关系,Activity是继承自android.view.ContextThemeWrapper,而android.view.ContextThemeWrapper正式继承自android.content.ContextWrapper,所以Activity是可以调用getSharedPreferences的;至于android.content.Context则是最祖上的抽象类,android.content.ContextWrapper是继承自它的,android.content.Context其中也有getSharedPreferences方法,所以也可以调用~
: ...................
我肿么觉着SharedPreferences方便呢
【 在 lixing 的大作中提到: 】
: 啊。。。还好没用SharedPreferences存东西~SQLite多方便~