Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.SharedPreferences com.edu.buu.oplayer.OPlayerApplication.getSharedPreferences(java.lang.String, int)' on a null object reference
public class OPreference {
private static final String PREFERENCE_NAME = "preference.db";
private SharedPreferences mPreference;
public OPreference() {
mPreference = OPlayerApplication.getApplication().
getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); //这句话报错
}
public class OPlayerApplication extends Application {
private static OPlayerApplication mApplication;
/** OPlayer SD卡缓存路 */
public static final String OPLAYER_CACHE_BASE = Environment.getExternalStorageDirectory() + "/oplayer";
/** 视频截图缓冲路径 */
public static final String OPLAYER_VIDEO_THUMB = OPLAYER_CACHE_BASE + "/thumb/";
/** 首次扫描 */
public static final String PREF_KEY_FIRST = "application_first";
@Override
public void onCreate() {
super.onCreate();
mApplication = this;
init();
}
private void init() {
//创建缓存目录
FileUtils.createIfNoExists(OPLAYER_CACHE_BASE);
FileUtils.createIfNoExists(OPLAYER_VIDEO_THUMB);
}
public static OPlayerApplication getApplication() {
return mApplication;
}
public void destory() {
mApplication = null;
}
}
查一下你的manifest,有没有把<spanstyle="font-family:Verdana,sans-serif,宋体;font-size:14px;line-height:22px;background-color:#FFFFFF;">OPlayerApplication加入applicationtag里。 你做一些耗时的AsyncTask,当getActivity()执行部分,Activity已被摧毁。所以getActivity()返回null,这是很正确的。
你应该做的是在你的线程或AsyncTask,你应该检查是否getActivity()为空,在<spanstyle="font-size:13.3333px;">Activity主机的情况下你的Fragment已经被摧毁了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。