Мое приложение использует одно действие и множество фрагментов, действие, которое расширяет AppCompatActivity, раздувает файл xml, который имеет LinearLayout среди других ViewGroups, цель этого LinearLayout состоит в том, чтобы удерживать 3 кнопки, а не все они видны при запуске.восстановление текста кнопки и видимости при изменении активности
В коде я изменяю вид LinearLayout и вид и тексты некоторых его кнопок в зависимости от действия, выполняемого в текущем фрагменте. Однако их состояние не поддерживается, когда операция восстанавливается после нажатия клавиши домашнего телефона. Сохранение видимости и текста каждой кнопки каждый раз, когда вы попадаете в SharedPreferences, слишком скучно, поэтому я попробовал код ниже, но не смог.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (mMainButtons_LL != null) {
mMainButtons_LL = (LinearLayout) savedInstanceState.getSerializable("mainButtons");
} else {
mMainButtons_LL = (LinearLayout) findViewById(R.id.main_buttons_LL);
}
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable("mainButtons", (Serializable) mMainButtons_LL);
}
Язь жалуется, что savedInstanceState.getInt ("видимость") должен быть один из view.Visible, view.Invisible, view.Gone –
мкм , Я не уверен в жалобе, но вы всегда можете использовать switch/case, когда 'putInt' и' getInt' ставить/получать 'View.VISIBLE' и так далее. Но вы понимаете разницу между моим кодом и вашим. – Leo
Вы имели в виду: int vis = savedInstanceState.getInt ("mainBtVis"); mMainButtons_LL.setVisibility (vis == 0? View.VISIBLE: vis == 4? View.INVISIBLE: View.GONE); и сделать это для всех детей в LinearLayout? –