Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何解决SharedReference中的NPE错误?_Java_Android - Fatal编程技术网

Java 如何解决SharedReference中的NPE错误?

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

我刚刚在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)

基本应用程序

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);