Запретить отображение вида после поворота

Я добавил макет ограничения над другим макетом ограничения, и внутри него есть кнопка, когда я нажимаю на нее, она должна сделать макет ограничения, и кнопка исчезнет, ​​и это код

    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"
Другие вопросы по тегам