когда я меняю ориентацию с книжной на альбомную, мой вычисленный результат исчезает. как это решить?

#android #orientation

#Android #ориентация

Вопрос:

Хай, в моем приложении calculator, когда я нажимаю на кнопку calculate, результат отображается нормально, но когда я меняю ориентацию, вычисленный результат исчезает.

Ответ №1:

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

 @Override  
public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig);  
}
  

и в manifest.xml

 <application android:icon="@drawable/icon" android:label="@string/app_name">´
    <activity android:name="XXXXX"
              android:label="@string/app_name"
              android:configChanges="keyboard|keyboardHidden|orientation|screenSize"> //this <--
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    ...
</application>
  

Редактировать:
Я добавил флаг screenSize. В Android> 3, если вы не добавите этот флаг, метод onConfigurationChanged вызываться не будет.

Комментарии:

1. @BBdev Я добавил новый флаг screenSize. Если вы не добавите его в Android> 3, метод не будет вызван

Ответ №2:

Пожалуйста, посмотрите этот пример о том, как сохранить состояние вашей активности с помощью пакета. Сначала вам нужно переопределить метод onSaveInstanceState.

 public void onSaveInstanceState(Bundle savedInstanceState) {
    TextView  txtName = (TextView)findViewById(R.id.raj44);
    String  aString = txtName.getText().toString();
    savedInstanceState.putString("Name", aString);
    super.onSaveInstanceState(savedInstanceState);
} 
  

В методе onCreate затем вы можете восстановить состояние вашего экземпляра из сохраненного пакета.

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.concretetool);
    if (savedInstanceState != null) {
        String  aString = savedInstanceState.getString("Name");
        if (aString != null) {
            txtName = (TextView)findViewById(R.id.raj44);
            txtName.setText(aString);
        }
    }
}
  

Ответ №3:

действие перезапускается после изменения ориентации. вы должны сохранить текущие значения в bundle

(Я предполагаю, что вы имеете в виду приложение для Android)