Невозможно получить сохраненные общие настройки во фрагменте - PullRequest
0 голосов
/ 22 октября 2018

Я работаю над приложением и, получая мои общие настройки (которые сохраняются при входе в систему), я пытаюсь получить его во фрагменте панели, но не могу его получить.После этого я проверил, сохранено или нет, тогда я использовал

boolean ok= editor.commit();
Toast.makeText(Login.this, "Saved: "+ok, Toast.LENGTH_LONG).show();

Мой тост показывает сообщение как Сохранено: true

После этой попытки я предполагаю, чтомои данные сохранены в предпочтениях, но я не могу их получить.Ниже приведен код фрагмента моей приборной панели.

public class dashboard extends Fragment {
private TextView comp_text,mail_text,gst_text;
private String mUsername;
private SharedPreferences mSharedPreferences;



@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    //this inflates out tab layout file.
    View x = inflater.inflate(R.layout.dashboard_frag, null);
    comp_text=(TextView)x.findViewById(R.id.company_id);
    mail_text=(TextView)x.findViewById(R.id.email_id);
    gst_text= (TextView)x.findViewById(R.id.gst_id);
    initSharedPreferences();
    Toast.makeText(getActivity(), "Logged member->  "+mUsername, Toast.LENGTH_LONG).show();
    return x;

}
private void initSharedPreferences() {
     mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
    mUsername = mSharedPreferences.getString(Constants.USERNAME, "");

    }
}

Здесь мое тост-шоу ** зарегистрированный участник-> **, это означает, что musername нечего печатать, а настройки не могут получить.

I 'Я все еще в замешательстве, это моя точка зрения, если вы хотите, я могу показать, где я сохранил настройки.

Помощь будет оценена по достоинству!СПАСИБО!

РЕДАКТИРОВАТЬ 1 ---- Вот моя функция onResponse, где я сохранил настройки.

 public void onResponse(Call<ServerResponse> call, retrofit2.Response<ServerResponse> response) {
            if(response.isSuccessful()) {
                ServerResponse serverResponse = response.body();
                if(serverResponse.getMessage().equals(username)) {
                    SharedPreferences.Editor editor = mSharedPreferences.edit();
                    editor.putBoolean("LoggedIn",true);
                    editor.putString(Constants.USERNAME,serverResponse.getMessage());

                   boolean ok= editor.commit();


                    Toast.makeText(Login.this, "Saved: "+ok, Toast.LENGTH_LONG).show();
                    goToProfile();
                }
            } else {
                Gson gson = new Gson();
                ServerResponse errorResponse = null;
                try {
                    errorResponse = gson.fromJson(response.errorBody().string(), ServerResponse.class);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                Snackbar.make(loginButton,errorResponse.getMessage(),Snackbar.LENGTH_SHORT).show();
            }
        }

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Попробуйте это

SharedPreferences.Editor editor = getSharedPreferences("my_prefs", MODE_PRIVATE).edit();;
                    editor.putBoolean("LoggedIn",true);
                    editor.putString(Constants.USERNAME,serverResponse.getMessage());

                   boolean ok= editor.commit();

А затем во фрагменте

mSharedPreferences = getActivity().getSharedPreferences("my_prefs", MODE_PRIVATE); ;
    mUsername = mSharedPreferences.getString(Constants.USERNAME, "");
0 голосов
/ 22 октября 2018

Решение:

Вот простой пример сохранения и извлечения Shared Preferences

Установка значений в настройках:

// MY_PREFS_NAME - a static String variable like: 
//public static final String MY_PREFS_NAME = "MyPrefsFile";
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
 editor.putString("name", "Elena");
 editor.putInt("idName", 12);
 editor.commit();

Получитьданные из предпочтения:

SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 
String restoredText = prefs.getString("text", null);
if (restoredText != null) {
  String name = prefs.getString("name", "No name defined");//"No name defined" is the default value.
  int idName = prefs.getInt("idName", 0); //0 is the default value.
}

больше информации:

Использование общих настроек

SharedНастройки

Источник: Общие настройки Простой пример

В вашем случае вы можете заменить свой код, как показано ниже:

Попробуйте это

SharedPreferences.Editor editor = getSharedPreferences("my_prefs", MODE_PRIVATE).edit();
editor.putBoolean("LoggedIn",true);
editor.putString(Constants.USERNAME,serverResponse.getMessage());
boolean ok= editor.commit();

А затем во Фрагменте

mSharedPreferences = getActivity().getSharedPreferences("prefs", MODE_PRIVATE); ;
mUsername = mSharedPreferences.getString(Constants.USERNAME, "");

Если вы хотите выйти из системы и удалить имя пользователя, просто очистите SharedPreferences:

SharedPreference.Editor pref = context.getSharedPreferences("prefs", MODE_PRIVATE).edit();
pref.clear();
pref.commit();

Надеюсь, это поможет.

...