Android сохраняет цвет фона TextView при повороте экрана - PullRequest
0 голосов
/ 06 октября 2011

Проблема в том, что, когда экран меняет ориентацию, фоновый цвет текста исчезает.Вот определение TextView:

<TextView
    android:id="@+id/nomResult"
    android:layout_width="fill_parent"
    android:layout_height="80sp"
    android:text="Nom result"
    android:layout_below="@id/svitrkods"
    android:layout_alignRight="@+id/svitrkods" 
    android:layout_above="@+id/exit_button"
    android:freezesText="true"
    />

Приложение - это приложение инвентаризации.Когда товар уже находится в инвентаре, я отображаю текст в текстовом представлении с красным фоном.vaiIrInvent.setBackgroundColor(0xfff00000); это работает.но когда экран вращается, цвет фона исчезает ... Когда приложение помечается звездой, я сохраняю оригинальный цвет фона textview defBackColor = vaiIrInvent.getBackground();, затем в приложении я переключаюсь на красный или по умолчанию.

if (isInInventory)
{
    vaiIrInvent.setBackgroundColor(0xfff00000);
}
else
{
    vaiIrInvent.setBackgroundDrawable(defBackColor);
}

Может быть, есть некоторыевариант как android: freezesText?Благодарю.

Ответы [ 3 ]

1 голос
/ 06 октября 2011

yup rotion вызывает onCreate (), вам нужно сохранить информацию для восстановления настроек

эта ссылка должна объяснить это немного лучше

Сохранение состояния активности Android с помощью Save Instance State

0 голосов
/ 07 октября 2011

Ответ на мою ситуацию таков: сохранить отсканированный штрих-код при изменении ориентации экрана

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
  // Save entered code 
  savedInstanceState.putString("svkKods", svkKods.getText().toString());
  super.onSaveInstanceState(savedInstanceState);
}

и восстановить код и запрос базы данных.

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
  super.onRestoreInstanceState(savedInstanceState);
  // Restore UI state from the savedInstanceState.
  // This bundle has also been passed to onCreate.
  String mystr = savedInstanceState.getString("svkKods");
  svkKods.setText(mystr);
  //if code presents 
  if (mystr.length() > 3) FindKods(mystr); //query database and fill all texts and variables
}

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

0 голосов
/ 06 октября 2011

Похоже, что вы теряете состояние isInInventory при ротации, потому что по умолчанию ОС создает новый экземпляр Activity в этом случае.Если это так, то лучше всего использовать обратные вызовы состояний сохранения / восстановления, которые предоставляет класс Activity.Проверьте это для деталей: Сохранение состояния активности .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...