2013-06-24 2 views
0

Я следующая проблема: Я создавать собственные Android-класс для CheckedTextView:Android CheckedTextView состояние

public class CustomCheckedTextView extends CheckedTextView { 
    public CustomCheckedTextView(Context context) { 
     super(context); 
       this.setOnClickListener (new View.OnClickListener() { 

        @Override 
        public void onClick(View v) { 
         ((CheckedTextView) v) .toggle(); 
         if (isChecked()){ 
          setBackgroundColor(Color.GREEN); 
         } else { 
          setBackgroundColor(Color.RED); 
         } 
         } 

      }) ; 
     } 
} 

И использовать его в основной деятельности следующим образом:

LinearLayout llayout = (LinearLayout) findViewById(R.id.linearLayout1); 
final CustomCheckedTextView checkedTV = new CustomCheckedTextView(this); 
llayout.addView(checkedTV) 

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

+0

Когда вы вращаетесь устройство 'onResume()' вызывается так, что вы также можете писать код. – juned

+0

@juned, поэтому мне нужно проверить все состояния в каком-то массиве и установить их после каждого поворота? Есть ли другое решение? – Arseniy

+0

вы можете пойти с ответом blganesh101 :) – juned

ответ

-1

Добавьте это в файл AndroidManifest.xml

android:configChanges="orientation" 
+0

[Состояние документации] (http://developer.android.com/guide/topics/manifest/activity-element .html): Примечание. Использование этого атрибута следует избегать и использовать только в качестве последнего средства. Пожалуйста, прочитайте [Обработка изменений времени выполнения] (http://developer.android.com/guide/topics/resources/runtime-changes.html) для получения дополнительной информации о том, как правильно обрабатывать перезапуск из-за изменения конфигурации. –

1

Не используйте configChanges для этого. Понимание того, почему это происходит и как сохранить состояние, очень важно. Пожалуйста, прочитайте documentation on this topic.