SharedPreferences для пустой ссылки на объект - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь реализовать функциональность, т. Е. Если сетевое соединение включено, то приложение попадет в API.Я добавил код сетевого подключения в родительское действие и вызываю метод из его фрагмента, но получаю нулевую ошибку ссылки на объект.Я добавляю код.Пожалуйста, проверьте.

Код родительской активности для вызова функции из фрагмента:

 private void showSnack(boolean isConnected) {
    String message;
    int color;
    if (isConnected) {


        **FinalizePreOrderFragment finalizePreOrderFragment = new FinalizePreOrderFragment(this);
        finalizePreOrderFragment.finalizePreOrderApi();**


    }

Код для фрагмента для вызова API

public void finalizePreOrderApi() {

    // pBar.setVisibility(View.VISIBLE);

    String tag_json_obj = "json_obj_req";
    String url = Constants.Pre_Order;

    HashMap<String, String> params = new HashMap<String, String>();

    final SessionManager sessionManager = new SessionManager(getActivity());
    HashMap<String, String> loggedDetails = sessionManager.getLoggedUserDetails();

    params.put("api_token", loggedDetails.get("api_token"));
    params.put("user_id", loggedDetails.get("id"));
    params.put("shops_order_list", lis);

    Log.e("TAG", "preOrderApi: " + params);


    JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
            url, new JSONObject(params),
            new Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {

                    Log.e("pre_order_response", response.toString());
                    try {
                        if (response.has("error")) {
                            Toast.makeText(getActivity(), response.getString("error"), Toast.LENGTH_LONG).show();

                        } else {
                            Toast.makeText(getActivity(), response.getString("success"), Toast.LENGTH_LONG).show();

                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                        Activity activity = getActivity();
                        if (activity != null && isAdded()) {
                            Toast.makeText(activity, R.string.some_error_occured, Toast.LENGTH_LONG).show();
                        }
                    }
                    //       pBar.setVisibility(View.GONE);

                }


            }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            VolleyLog.e("Error: " + error.getMessage());
            Activity activity = getActivity();
            if (activity != null && isAdded()) {
                Toast.makeText(activity, R.string.some_error_occured, Toast.LENGTH_LONG).show();
                pBar.setVisibility(View.GONE);

            }
        }
    });

    AppController.getInstance().addToRequestQueue(jsonObjReq, tag_json_obj);
}

Я использую SharedPreference в точке ниже:

final SessionManager sessionManager = new SessionManager(getActivity());
        HashMap<String, String> loggedDetails = sessionManager.getLoggedUserDetails();

Я сохраняю свои предпочтения в классе диспетчера сеансов.И получение ошибки в точке ниже:

 public SessionManager(Context context) {
    this._context = context;
    pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
    editor = pref.edit();
}

Error in session manager

1 Ответ

0 голосов
/ 27 сентября 2018

Вы можете добавить это в свой getLoggedUserDetails() метод.

SharedPreferences prefs = getSharedPreferences(YOUR_PREFRENCE_KEY, MODE_PRIVATE); 
//Lets say you have stored user_id in object retrieve it 
int mUserId = prefs.getInt("user_id", 0);//default is 0
if (mUserId >0)
 //Return your Object
else
 //User is not logged in or stored in Prefrences
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...