Java 如何解决SharedReference中的NPE错误?
我刚刚在SharedReference中得到一个NPE错误,其中int的值为null。你能帮忙给出解决方案或建议吗 原因:java.lang.NullPointerException:尝试调用虚拟机 方法“android.content.SharedReferences” android.content.Context.getSharedReferences(java.lang.String,int)' 关于空对象引用 位于com.example.gmfadmin.utils.SessionManagement(SessionManagement.java:27) 位于com.example.gmfadmin.core.dashboard.peserta.pesertapsenter.(pesertapsenter.java:27) 位于com.example.gmfadmin.core.dashboard.peserta.PesertaActivity.initComponent(PesertaActivity.java:50) 位于com.example.gmfadmin.core.dashboard.peserta.PesertaActivity.onCreate(PesertaActivity.java:45) 位于android.app.Activity.performCreate(Activity.java:5990) 位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 基本应用程序Java 如何解决SharedReference中的NPE错误?,java,android,Java,Android,我刚刚在SharedReference中得到一个NPE错误,其中int的值为null。你能帮忙给出解决方案或建议吗 原因:java.lang.NullPointerException:尝试调用虚拟机 方法“android.content.SharedReferences” android.content.Context.getSharedReferences(java.lang.String,int)' 关于空对象引用 位于com.example.gmfadmin.utils.SessionMa
public class BaseApps extends Application {
private static Context context;
@Override
public void onCreate(){
super.onCreate();
BaseApps.context = getApplicationContext();
}
public static Context getAppContext(){
return BaseApps.context;
}
}
NPE上的android.content.Context.getSharedReferences(java.lang.String,int)“”- 这意味着您的“mContext”在此字符串中为空:
mSharedPreferences = mContext.getSharedPreferences(session_name, MODE_PRIVATE);
您是在哪个函数或代码处出错的?请发布调用此类的活动代码。我刚刚编辑了我的问题。看起来您的“BaseApps.getAppContext()”中存在问题,您能显示它的代码吗?当然。等一下,他问:“我刚刚在SharedReference中得到一个NPE错误,其中int的值为null”,我回答他为什么得到这个异常,以及在哪个字符串中发生异常。这个问题的解决方案是显而易见的-确保SessionManagement构造函数中传递的“mContext”不为空。我刚刚编辑了我的问题。@Ashish,那么他应该这样做。奇怪的问题。
public class PesertaPrsenter {
private static final String TAG = PesertaPrsenter.class.getSimpleName();
PesertaView view;
private SessionManagement mSessionManagement;
private CompositeDisposable compositeDisposable;
private HashMap<String, String> user;
public PesertaPrsenter(PesertaView view){
this.view = view;
mSessionManagement = new SessionManagement(BaseApps.getAppContext());
loadToken();
}
private void loadToken() {
if (mSessionManagement != null)
user = mSessionManagement.getUserDetails();
}
public void loadPeserta(){
view.showLoading();
RequestAPI requestAPI = NetworkClient.getRetrofit().create(RequestAPI.class);
if (compositeDisposable == null)
compositeDisposable = new CompositeDisposable();
compositeDisposable.add(requestAPI.infopeserta(
user.get(SessionManagement.key_token).toString().trim())
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.single())
.subscribe(
peserta -> handleResponse(peserta),
throwable -> handleError(throwable)
)
);
}
private void handleResponse(ResponsePeserta peserta){
view.loadPeserta(peserta);
view.hideLoading();
}
private void handleError(Throwable throwable){
view.loadPesertaError(throwable.getLocalizedMessage().toString());
Log.d(TAG,"handleError: "+throwable.toString());
Log.d(TAG,"handleError "+user.get(SessionManagement.key_token).toString().trim());
view.hideLoading();
}
public void destroyData(){
if (compositeDisposable != null)
compositeDisposable.dispose();
}
}
public interface PesertaView {
void loadPeserta(ResponsePeserta peserta);
void loadPesertaError(String message);
void showLoading();
void hideLoading();
}
public class BaseApps extends Application {
private static Context context;
@Override
public void onCreate(){
super.onCreate();
BaseApps.context = getApplicationContext();
}
public static Context getAppContext(){
return BaseApps.context;
}
}
mSharedPreferences = mContext.getSharedPreferences(session_name, MODE_PRIVATE);