2016-02-16 3 views
-1

Я пытаюсь сделать несколько запросов и я сохранение данных в общей предпочтительности второго общего кода предпочтения:Shared Предпочтения не работает

public void makeMultipleRequests() 

{ 
    for(i=0;i<districtid.length;i++) 
    { 
     districtId=districtid[i]; 
    String url="http://49.50.72.188/epdswebsite/webservice.asmx/GetDFSCDetails?DistrictId="+districtId; 
     dfsc = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() { 

      @Override 
      public void onResponse(JSONObject response) { 
       // TODO Auto-generated method stub 

       dialog.dismiss(); 
       try { 
        if (dialog.isShowing()){ 
         dialog.dismiss(); 
        } 
        JSONArray ar = response.getJSONArray("DFSCDetails"); 
        JSONObject data= ar.getJSONObject(0); 
        String ema=data.getString("Email"); 
        String mob=data.getString("Mobile"); 
        String off= data.getString("LandLine"); 
        String ser= data.getString("DFSCName"); 
        String tit = data.getString("District_Name"); 
        String add=data.getString("Address"); 
        String disid= data.getString("District_Number"); 
        preference = getSharedPreferences("Dfsc"+disid, 0); 
        SharedPreferences.Editor edit = preference.edit(); 
        edit.putBoolean("dfscboolean", true); 
        edit.putString("serial", ser); 
        edit.putString("office", off); 
        edit.putString("title", tit); 
        edit.putString("address", add); 
        edit.putString("mobile", mob); 
        edit.putString("email", ema); 
             edit.apply(); 
             dialog.dismiss(); 

       } catch (JSONException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
        dialog.dismiss(); 
       }} 
     }, new Response.ErrorListener() { 

      @Override 
      public void onErrorResponse(VolleyError arg0) { 
       // TODO Auto-generated method stub 
       dialog.dismiss(); 
      } 

     }); 
     String surl="http://49.50.72.188/epdswebsite/webservice.asmx/GetFSODetailByDistrict?DistrictId="+districtId; 
     JsonObjectRequest fso= new JsonObjectRequest(Request.Method.GET, surl, null, new Listener<JSONObject>() { 

       @Override 
       public void onResponse(JSONObject response) { 
        // TODO Auto-generated method stub 
        try { 
         JSONArray ar = response.getJSONArray("FSOModelDetails"); 
         JSONObject data= ar.getJSONObject(0); 
         String add= data.getString("Office_Address"); 
         String mob= data.getString("Personal_Mobile"); 
         String nam = data.getString("Name"); 
         String dis = data.getString("District_Name"); 

         SharedPreferences mPrefs = getSharedPreferences("Fso"+districtId, 0); 
         SharedPreferences.Editor edit = mPrefs.edit(); 
         edit.putBoolean("fsoboolean", true); 
         edit.putString("address", add); 
         edit.putString("mobile",mob); 
         edit.putString("name", nam); 
         edit.putString("district", dis); 

          edit.apply(); 
          System.out.println(mPrefs.getString("address", "failed")); 
          dialog.dismiss(); 

         dialog.dismiss(); 
        } catch (JSONException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
         dialog.dismiss(); 
         Toast.makeText(getApplicationContext(), "Failed! Could not connect to the server!", Toast.LENGTH_SHORT).show(); 
        } 

       } 
      }, new Response.ErrorListener() { 

       @Override 
       public void onErrorResponse(VolleyError arg0) { 
        // TODO Auto-generated method stub 
        dialog.dismiss(); 
        Toast.makeText(getApplicationContext(), "Failed! Could not connect to the server!", Toast.LENGTH_SHORT).show(); 
       } 

      }); 
     request.add(dfsc); 
     request.add(fso); 
    } 
    `* 

Это вторая деятельность, где я извлечение данных из enter code here общего предпочтения :

public void loadstaticdata() 
{ 
    SharedPreferences mPrefs = getSharedPreferences("Fso"+districtId, 0); 
    String addres=mPrefs.getString("address", ""); 
    String nam=mPrefs.getString("name", ""); 
    String distric=mPrefs.getString("district", ""); 
    String mobil=mPrefs.getString("mobile", ""); 
    System.out.println(addres); 
    System.out.println(distric); 
    System.out.println(mobil); 
    System.out.println(nam); 
    address.setText(addres); 
    name.setText(nam); 
    district.setText(distric); 
    mobile.setText(mobil); 

} 

Где я ошибаюсь?

+0

да я не в состоянии получить данные в loadstaticdata () { } –

+0

попробуйте edit.commit() вместо edit.apply() .. Это может не измениться, а просто попробовать – ValayPatel

+0

Я думаю, что [этот ответ] (http://stackoverflow.com/a/34221737/4871526) может вам помочь! –

ответ

0

Прежде всего, вы должны выбрать способ, например SQLite, если вы собираетесь сэкономить значительное количество данных.

В любом случае, поскольку вы используете это в своем проекте, я решил дать прямой ответ на ваш вопрос.

Вместо edit.apply(); попробуйте использовать edit.commit();.

Метод commit() работает на основном потоке и блокируется. Метод apply() выполняется асинхронно.

+0

Я пробовал, чтобы он не работал –

+0

Тот же метод работает для Dfsc Request, но не для другого –

+0

Вы уверены, что не существует никакого исключения и что данные, которые вы пишете, не пустые? –

0

Убедитесь, что SharedPreferences является неодушевленный от PreferenceManager.getDefaultSharedPreferences

Совершать любые данные:

String myValue="My Value"; 
    SharedPreferences preference = PreferenceManager.getDefaultSharedPreferences(this); 
    SharedPreferences.Editor edit = preference.edit(); 
    edit.putString("KEY", myValue); 
    /* Your Code */ 
    edit.commit(); 

Для его извлечения:

SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this); 
    String myValue=mPrefs.getString("KEY", ""); 
    /* Your code */ 
+0

Это действительно не обязательно. Я никогда не использовал getDefaultSharedPreferences, и он всегда работает нормально –

+0

Он работал, но поскольку я использую его в цикле, он дает мне последнее значение ..... любое решение для этого? –

+0

@RohitSharma, потому что он переопределяет значение каждый раз, поэтому есть трюк, добавляя идентификатор для каждого ключа, например; 'edit.putString (" serial "+ disid, ser);' –

Смежные вопросы