Shared Preference getting null in adapter how to solve it?

时间:2017-06-09 12:39:45

标签: android android-fragments android-sharedpreferences

This is the view when i click switch rent then async task will run and im getting result an dthe recycle view not updating and it shows image button and recycle view null pointer exception here is my code Image here

public void rent_buy_selection(String type,String propertyID,String placeId,String buildingName,String bedRooms)
{
    Property_listing1 listing1  = new Property_listing1(type,propertyID,placeId,buildingName,bedRooms);
    listing1.execute();

}


public class Property_listing1 extends AsyncTask<Void, Void, Boolean> {
    String PropertyID;
    String placeId;
    String property_type;
    String BuildingName;
    String BedRooms;
    String image1,SenderId;

    JSONArray detail;

    JSONParser ob = new JSONParser();
    JSONArray jArray;
    Property_listing1(String type,String propertyID,String PlaceId,String buildingName,String bedRooms) {
        Log.e("listFragment",":"+type);
        PropertyID   = propertyID;
        placeId      = PlaceId;
        BuildingName = buildingName;
        BedRooms     = bedRooms;
        property_type= type;

      /*  if(getActivity().getIntent().hasExtra("PropertyID")) {
            PropertyID = getActivity().getIntent().getExtras().getString("PropertyID");
        }
        if(getActivity().getIntent().hasExtra("PropertyID")) {
            placeId = getActivity().getIntent().getExtras().getString("placeId");
        }

        property_type     = type;//getActivity().getIntent().getExtras().getString("property_type");

        if(getActivity().getIntent().hasExtra("PropertyID")) {
            BuildingName = getActivity().getIntent().getExtras().getString("BuildingName");
        }
        if(getActivity().getIntent().hasExtra("PropertyID")) {
            BedRooms = getActivity().getIntent().getExtras().getString("BedRooms");
        }
        if(getActivity().getIntent().hasExtra("PropertyID")) {
            SenderId = getActivity().getIntent().getExtras().getString("SenderId");
        }*/

    }
    List<DataProperty> data=new ArrayList<>();


    @Override
    protected Boolean doInBackground(Void... params) {

        try {
            // Building Parameters
            List<NameValuePair> paramss = new ArrayList<NameValuePair>();


            paramss.add(new BasicNameValuePair("more_list", "1"));
            paramss.add(new BasicNameValuePair("PropertyID", PropertyID));
            paramss.add(new BasicNameValuePair("property_type", property_type));
            paramss.add(new BasicNameValuePair("BuildingName", BuildingName));
            paramss.add(new BasicNameValuePair("BedRooms", BedRooms));
            paramss.add(new BasicNameValuePair("placeId", placeId));

            try {

               /* if (getActivity().getIntent().hasExtra("shared")) {

                    paramss.add(new BasicNameValuePair("shared", "1"));
                    paramss.add(new BasicNameValuePair("SenderId", SenderId));

                }*/
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
            // getting JSON Object
            // Note that create product url accepts POST method
            JSONObject json = ob.makeHttpRequest("http://208.77.22.13/proprek_android/property_listing.php", "POST", paramss);
            Log.d("Parameters",":"+paramss);
            // check logcat for response
            Log.d("Create Response", json.toString());

            // check for success tag
            try {

                String success = json.getString("status");
                Log.d("test123",":"+success);
                if (success.equals("true")) {


                     jArray  = json.getJSONArray("result");

                    // Extract data from json and store into ArrayList as class objects
                    for(int i=0;i<jArray.length();i++){
                        JSONObject json_data     = jArray.getJSONObject(i);
                        DataProperty fishData    = new DataProperty();
                        fishData.Title           = json_data.getString("title");
                        fishData.Id              = json_data.getString("id");
                        fishData.agentId         = json_data.getString("agent_id");
                        fishData.prprtyId        = json_data.getString("property_id");
                        fishData.Price           = json_data.getString("price");
                        fishData.Area            = json_data.getString("area");
                        fishData.agent_name      = json_data.getString("first_name");
                        fishData.agent_pic       = json_data.getString("fb_img");
                        fishData.Bedrooms        = json_data.getString("bedrooms");
                        fishData.Bathrooms       = json_data.getString("bathrooms");
                        fishData.Image           = json_data.getString("agent_logo");
                        fishData.Phone           = json_data.getString("phone");
                        fishData.property_Img    = json_data.getString("image1");
                        fishData.agent_logo      = json_data.getString("agent_logo");
                        fishData.company_name    = json_data.getString("company_name");


                                fishData.shared = "0";
                                fishData.description = "0";
                               // data.add(fishData);

                        }
                        catch (Exception e)
                        {
                            e.printStackTrace();
                        }

                        Log.e("agent_name",":"+fishData.agent_name);
                        data.add(fishData);

                    }


                } else {
                    // failed to create product
                    // flag = true;
                    throw new InterruptedException("test");
                }
                // Simulate network access.
                //Thread.sleep(2000);

            } catch (InterruptedException e) {

                return false;
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return true;
    }

    @Override
    protected void onPostExecute(final Boolean success) {
        String Title="";
        try {


                mAdapter = new PropertyAdapter(getActivity(), data);
                mRVFishPrice.setAdapter(mAdapter);
                mAdapter.notifyDataSetChanged();
                mRVFishPrice.setLayoutManager(new LinearLayoutManager(getActivity()));

        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

When click the rent

 public PropertyAdapter(Context context, List<DataProperty> data){

    Log.e("shared",":test");
    SharedPreferences sharedPreferences =   context.getSharedPreferences("reg_id",Context.MODE_PRIVATE);
    user_id = sharedPreferences.getString("id","");
    this.context=context;
   // inflater= (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    this.data=data;


    PropertyID        = ((Activity) context).getIntent().getExtras().getString("PropertyID");
    placeId           = ((Activity) context).getIntent().getExtras().getString("placeId");
    property_type     = ((Activity) context).getIntent().getExtras().getString("property_type");
    BuildingName      = ((Activity) context).getIntent().getExtras().getString("BuildingName");
    BedRooms          = ((Activity) context).getIntent().getExtras().getString("BedRooms");
    SenderId          = ((Activity) context).getIntent().getExtras().getString("SenderId");
}

How to fix this issue?

error Log 06-09 21:30:06.719 9677-9677/com.ksoft.propreka W/System.err: java.lang.NullPointerException 06-09 21:30:06.719 9677-9677/com.ksoft.propreka W/System.err: at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:161) 06-09 21:30:06.719 9677-9677/com.ksoft.propreka W/System.err: at com.ksoft.propreka.Adapter.PropertyAdapter.(PropertyAdapter.java:82) 06-09 21:30:06.719 9677-9677/com.ksoft.propreka W/System.err: at com.ksoft.propreka.Fragment.Property_list$Property_listing1.onPostExecute(Property_list.java:562) 06-09 21:30:06.719 9677-9677/com.ksoft.propreka W/System.err: at com.ksoft.propreka.Fragment.Property_list$Property_listing1.onPostExecute(Property_list.java:300) 06-09 21:30:06.719 9677-9677/com.ksoft.propreka W/System.err: at android.os.AsyncTask.finish(AsyncTask.java:631) 06-09 21:30:06.719 9677-9677/com.ksoft.propreka W/System.err: at android.os.AsyncTask.access$600(AsyncTask.java:177) 06-09 21:30:06.719 9677-9677/com.ksoft.propreka W/System.err: at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) 06-09 21:30:06.719 9677-9677/com.ksoft.propreka W/System.err: at android.os.Handler.dispatchMessage(Handler.java:99) 06-09 21:30:06.719 9677-9677/com.ksoft.propreka W/System.err: at android.os.Looper.loop(Looper.java:137) 06-09 21:30:06.719 9677-9677/com.ksoft.propreka W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5041) 06-09 21:30:06.719 9677-9677/com.ksoft.propreka W/System.err: at java.lang.reflect.Method.invokeNative(Native Method) 06-09 21:30:06.719 9677-9677/com.ksoft.propreka W/System.err: at java.lang.reflect.Method.invoke(Method.java:511) 06-09 21:30:06.719 9677-9677/com.ksoft.propreka W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 06-09 21:30:06.719 9677-9677/com.ksoft.propreka W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 06-09 21:30:06.719 9677-9677/com.ksoft.propreka W/System.err: at dalvik.system.NativeStart.main(Native Method)

2 个答案:

答案 0 :(得分:0)

are you put id preference in shared preference like below before call adapter

    SharedPreferences sharedPref = getActivity().getSharedPreferences("reg_id",Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPref.edit();
    editor.putString("id","1323");
    editor.commit();

答案 1 :(得分:0)

使用时:

SharedPreferences sharedPreferences = context.getSharedPreferences("reg_id",Context.MODE_PRIVATE);

Android验证此sharedPreference是否与此&#34; id&#34;已经存在,如果没有它创建一个,如果它然后得到它的值。

在从SharedPreferences获取值之前,您需要使用Editor将信息放在其上,如下面的示例所示:

SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("reg_id", fieldText.getText().toString());
editor.apply();

我相信这是你所缺少的,你创建了一个SharedPref,但你并没有把它放在它上面。

记住SharedPref只能存储原始值。