2017-04-06 117 views
-1

我已經爲服務類中的共享首選項設置了set和get方法。第一次運行良好,就像它第一次返回正確的值,但之後它返回空值。首先返回正確的值後從sharedpreference獲得空值

我的代碼:

public class ServiceClass extends Service { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 

     context=getApplicationContext(); 


     return START_STICKY; 
    } 


    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     LocalBroadcastManager.getInstance(context).sendBroadcast(new Intent("Notification")); 
    } 

    @Nullable 
    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 


    //sharedpreference 
    public static void setDefaults(String key, String value, Context context) { 
     SharedPreferences prefs = 
       PreferenceManager.getDefaultSharedPreferences(context); 

     SharedPreferences.Editor editor = prefs.edit(); 

     editor.clear(); 

     editor.putString(key, value); 

     editor.apply(); 
    } 

    public static String getDefaults(String key, Context context) { 

     SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 

     return preferences.getString(key, null); 
    } 

    public static void ClearAllPreferences(Context context){ 

     //remove all your prefs 
     context.getSharedPreferences("prefs", 0).edit().clear().commit(); 
    } 
} 

我不明白爲什麼發生問題。我嘗試了很多,但沒有找到解決辦法。請幫我解決這個問題

+1

你都sharedpreference是不同的。 1)當你存儲值2)當你清除sp – Piyush

+0

如何?你能解決這個問題嗎? ?但同樣的代碼在另一個項目中運行良好 – AAA

+0

使用'SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);'然後''prefs.edit()。clear()。commit();'同時檢查你的上下文不能'空' – Piyush

回答

0

你的編碼技能不好試試這個代碼它會正常工作。

public class ServiceClass extends Service { 

Context context; 
static SharedPreferences prefs; 
static SharedPreferences.Editor editor; 

@Override 
public void onCreate() { 
    super.onCreate(); 

} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 

    context = getApplicationContext(); 
    prefs = context.getSharedPreferences("prefs", MODE_PRIVATE); 

    return START_STICKY; 
} 


@Override 
public void onDestroy() { 
    super.onDestroy(); 
    LocalBroadcastManager.getInstance(context).sendBroadcast(new Intent("Notification")); 
} 

@Nullable 
@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 


//sharedpreference 
public static void setDefaults(String key, String value, Context context) { 
    editor = prefs.edit(); 
    editor.putString(key, value); 
    editor.commit(); 

} 

public static String getDefaults(String key, Context context) { 

    return prefs.getString(key, null); 
} 

public static void ClearAllPreferences(Context context) { 

    //remove all your prefs 
    prefs.edit().clear().commit(); 
} 

}

+0

編碼技能得分不高。 @AAA在他的口袋裏得到了很多東西來學習......機會是精確的 –

+0

不工作..,。,。, – AAA

+0

查找問題的調試代碼 –