2015-06-09 2 views
0

У меня есть виджет, и я хочу установить некоторое значение из активности настроек. Я сохранил значение для общего прив, используя этот код:Получить значение из общих предпочтений в remoteview

MainActivity.editor.putInt("selected_theme", 1); 
      MainActivity.editor.commit(); 

А в классе RemoteView я сделал, как это в OnUpdate метода:

MainActivity.prefs = context.getSharedPreferences("prefs", Context.MODE_PRIVATE); 
    MainActivity.editor = MainActivity.prefs.edit(); 

    int saved_value = MainActivity.prefs.getInt("selected_theme", 0); 
    Log.d("ggg", "receiver: " + saved_value); 

однако он всегда дает мне дорожит , который по умолчанию. Мне нужно получить целочисленное значение, например 1,2,3 .... от общего доступа, которые были сделаны в классе Activity.

+0

Сохраните ваши значения предпочтений в 'Application level' –

+0

yup thats, котор я сделал. Я сохранил значения в классе активности. – kiturk3

+0

Вы действительно хотите выполнить что-то на основе ввода пользователем внутри виджета? –

ответ

1

Вы должны всегда использовать Utility Classes для выполнения таких задач, как сохранение данных (общие настройки, база данных, сериализация и т. Д.).
Здесь я предлагаю вам основные шаблона:

GenericUtility.class:

package com.your.packagename; 

import android.content.Context; 
import android.content.SharedPreferences; 

public class GenericUtility { 

    public static int getIntFromSharedPrefsForKey(String key, Context context) 
    { 
     int selectedValue = 0; 

     SharedPreferences prefs = context.getSharedPreferences("com.your.packagename", Context.MODE_PRIVATE); 
     selectedValue = prefs.getInt(key, 0); 

     return selectedValue; 
    } 

    public static boolean setIntToSharedPrefsForKey(String key, int value, Context context) 
    { 
     boolean savedSuccessfully = false; 

     SharedPreferences prefs = context.getSharedPreferences("com.your.packagename", Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor = prefs.edit(); 

     try 
     { 
      editor.putInt(key, value); 
      editor.apply(); 
      savedSuccessfully = true; 
     } 
     catch (Exception e) 
     { 
      savedSuccessfully = false; 
     } 

     return savedSuccessfully; 
    } 

    public static String getStringFromSharedPrefsForKey(String key, Context context) 
    { 
     String selectedValue = ""; 

     SharedPreferences prefs = context.getSharedPreferences("com.your.packagename", Context.MODE_PRIVATE); 
     selectedValue = prefs.getString(key, ""); 

     return selectedValue; 
    } 

    public static boolean setStringToSharedPrefsForKey(String key, String value, Context context) 
    { 
     boolean savedSuccessfully = false; 

     SharedPreferences prefs = context.getSharedPreferences("com.your.packagename", Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor = prefs.edit(); 

     try 
     { 
      editor.putString(key, value); 
      editor.apply(); 
      savedSuccessfully = true; 
     } 
     catch (Exception e) 
     { 
      savedSuccessfully = false; 
     } 

     return savedSuccessfully; 
    } 
} 

Пример использования:

для сохранения данных в общей Preferences:

GenericUtility.setIntToSharedPrefsForKey("selected_theme", 1, getApplicationContext()); 

ИЛИ

GenericUtility.setIntToSharedPrefsForKey("selected_theme", 1, MyActivity.this)); 

для извлечения данных из общих настроек:

int selectedValue = GenericUtility.getIntFromSharedPrefsForKey("selected_theme", getApplicationContext()); 

ИЛИ

int selectedValue = GenericUtility.getIntFromSharedPrefsForKey("selected_theme", MyActivity.this); 

Я надеюсь, что это помогает.

+0

выглядит хорошо ... проверит и вернется к вам :) – kiturk3

+0

Конечно, не торопитесь. –

+1

Awsm man ... проблема решена :) – kiturk3

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