似乎这种情况出现了很多。Activity
Android 会在配置更改时销毁并重新创建。屏幕旋转是方向的一部分。为了避免这种情况,Activity 负责保留状态。为此给出的机制是onCreate
和onSaveInstanceState
。在您的示例中,您可以执行以下操作:
int uiPhase = 1;
@Override
void onCreate( Bundle data ) {
uiPhase = data.getInt( "uiPhase", 1 );
// inflate layout
setPhase( uiPhase );
}
// invoke the following each time your screen changes
void setPhase( int newPhase ) {
uiPhase = newPhase;
switch( uiPhase ) {
case 1: // show UI elements for first screen, hide others
break;
case 2: // show UI elements for second screen, hide others
break;
case 3: // show UI elements for third screen, hide others
break;
}
}
@Override
void onSaveInstanceState( Bundle data ) {
data.put( "uiPhase", uiPhase );
}
我不想把上面的模式复杂化太多,但是设置可见性的一个好方法如下:
phase1view.setVisibility( uiPhase == 1 ? View.VISIBLE : View.GONE );
phase2view.setVisibility( uiPhase == 2 ? View.VISIBLE : View.GONE );
phase3view.setVisibility( uiPhase == 3 ? View.VISIBLE : View.GONE );
这将setPhase
方法中的重复拉到了一起。