Запретить отображение вида после поворота
Я добавил макет ограничения над другим макетом ограничения, и внутри него есть кнопка, когда я нажимаю на нее, она должна сделать макет ограничения, и кнопка исчезнет, и это код
Button button11 = (Button) findViewById(R.id.button11);
final ConstraintLayout constraintLayout = (ConstraintLayout) findViewById(R.id.constraint_layout_inside);
button11.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
constraintLayout.setVisibility(View.INVISIBLE);
}
проблема, когда я поворачиваю экран, снова появляется макет ограничения, как это предотвратить?
2 ответа
Это не может быть обработано автоматически, потому что действие уничтожается и создается после изменения ориентации. Таким образом, вы должны справиться с этим самостоятельно.
Сохранение текущего состояния в onSaveInstanceState()
:
override fun onSaveInstanceState(outState: Bundle?) {
super.onSaveInstanceState(outState)
outState.putBoolean("someKey", constraintLayout.visibility == View.VISIBLE)
}
Затем в onCreate()
:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Initialize views
...
// if `savedInstanceState` is not null, then look for `someKey` in bundle
savedInstanceState?.run {
val isVisible = getBoolean("someKey")
constraintLayout.visibility = if (isVisible) View.VISIBLE else View.INVISIBLE
}
if (null == savedInstanceState) {
// This activity is starting for the first time,
// not an orientation change case
}
}
Добавьте этот метод в свою активность
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
setContentView(R.layout.lanscape_activity);
// your own layout
} else {
setContentView(R.layout.portrait_activity);
// your own layout
}
}
И эта строка в вашем Манифесте
android:configChanges="orientation|keyboardHidden|screenSize"