Проблема с изменением ориентации экрана: onCreate

У меня проблема при изменении ориентации экрана. У меня есть действие с двумя намерениями, которое вызывается службой.

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

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

public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.call);

  Button endCall = (Button) findViewById(R.id.stopCall);
  endCall.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    /// ...
   }
  });

  handleIntent(getIntent());
 }

Как люди относятся к этой переориентации? Есть ли способ, чтобы он не вспоминал onCreate, пожалуйста, или каков наиболее распространенный способ лечения этого случая, пожалуйста?


person Jary    schedule 05.12.2010    source источник
comment
Это, наверное, самый часто задаваемый вопрос об Android. Когда вы меняете ориентацию, активность уничтожается и создается заново. Просто поищите здесь изменения ориентации, и вы найдете множество решений.   -  person Falmarri    schedule 05.12.2010
comment
Спасибо. Я использовал android:configChanges=orientation|keyboardHidden в манифесте, и это исправлено. Большое спасибо.   -  person Jary    schedule 05.12.2010


Ответы (2)


В вашем случае вам нужно остановить обработчик на onDestroy, чтобы его можно было снова выполнить в onCreate.

person Cristian    schedule 05.12.2010
comment
Спасибо за ответ, извините, я немного запутался. Не могли бы вы объяснить, что вы подразумеваете под остановкой обработчика, пожалуйста? - person Jary; 05.12.2010

См. эту документацию для получения рекомендаций. configChanges — это краткосрочное решение http://android-developers.blogspot.com/2009/02/faster-screen-orientation-change.html

person GSree    schedule 01.01.2011