Постоянное вращение выбранное значение - PullRequest
0 голосов
/ 11 ноября 2010

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

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

final Spinner spinner = (Spinner)findViewById(R.id.Spinner_gender);

  ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(this, spinnerID, android.R.layout.simple_spinner_item);
  adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  spinner.setAdapter(adapter);

  spinner.setOnItemSelectedListener(
    new AdapterView.OnItemSelectedListener() {
     public void onItemSelected(AdapterView<?> parent, View itemSelected, int selectedItemPosition, long selected){
      Editor editor = mGameSettings.edit();
      editor.putLong(GAME_PREFERENCES_GENDER, selectedItemPosition);
      editor.commit();
     }

  @Override
  public void onNothingSelected(AdapterView<?> arg0) {
   // TODO Auto-generated method stub

  }

 }
  );

  //if( mGameSettings.contains(GAME_PREFERENCES_GENDER) ){
   Toast.makeText(QuizSettingsActivity.this, "Detected(again): " + spinner.getSelectedItemPosition(), Toast.LENGTH_SHORT).show();
   spinner.setSelection( spinner.getSelectedItemPosition() );
  //}

Я использую spinner.getSelectedItemPosition(), чтобы получить индекс выбранного счетчика.Может кто-нибудь сказать, пожалуйста, что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 11 ноября 2010

Вы никогда не читаете с вашего SharedPreferences. Вы пишете им (по крайней мере, я предполагаю, что это то, что есть mGameSettings), но не читаете их.

spinner.setSelection (spinner.getSelectedItemPosition ());

Это бессмысленное утверждение. Вы устанавливаете выбор прядильщика на его текущий выбор. Если вы хотите установить для выбора счетчика значение из SharedPreferences, вам нужно прочитать значение из SharedPreferences.

0 голосов
/ 18 апреля 2013

Я нашел решение для сохранения состояния блесны в приложениях Android в простых ситуациях.

В моем приложении мой счетчик имел три значения ( Нормальное, Важное и Срочное ). Первоначально эти значения были сохранены в базе данных SQLite в виде строк.

Мое решение заключалось в хранении значений счетчика вместо целых чисел в базе данных SQLite и последующем использовании следующего кода для установки значения счетчика при перезагрузке действия:

int temp = (int) memo.getInt(memo.getColumnIndexOrThrow(MemoDbAdapter.KEY_MODE));
mModeText.setSelection(temp);

Это позволило мне передавать данные из базы данных SQLite напрямую, без необходимости определять положение желаемого выбора из строк, хранящихся в базе данных. Это сработало для моего простого Memo-приложения, но, очевидно, не сработает, если вам нужно сохранить вывод спиннера в виде строк в вашей базе данных.

...