防止在方向更改android片段上刷新活动

时间:2013-06-09 15:03:29

标签: android android-fragments screen-orientation

我正在开发一个Android应用程序,在那里我用点击替换片段。我有横向和纵向模式的单独设计。但问题是,当我改变方向时,活动刷新并且按钮保持未被点击,我尝试给予

android:configChanges="orientation|keyboardHidden"

但没有用,虽然将其设置为屏幕尺寸没有采用其他布局设计,请建议如何克服这个问题,不要刷新方向更改的活动,但仍然接受其他布局。

3 个答案:

答案 0 :(得分:8)

在API级别12以上,我们还需要添加screenSize以防止与方向一起刷新。

android:configChanges="orientation|keyboardHidden|screenSize"

答案 1 :(得分:1)

使用onSaveInstanceState存储按钮状态或任何其他状态,并使用提供的onCreateBundle中将其恢复。

如果您使用的是CompoundButton按钮(例如CheckBox),系统会自动为您保留其状态。

答案 2 :(得分:1)

正如Gorski所说,onSaveInstanceState & onViewStateRestored(对于片段)是存储片段或活动状态的方式

onSaveInstanceState:在片段暂停或停止时调用

onViewStateRestored : 片段返回时调用

例如:

@Override
    public void onSaveInstanceState(@NonNull Bundle outState) {
        outState.putParcelableArrayList(Keys.CURRENT_OPERATIONS.name(), operations);
        firstCall = true;
        super.onSaveInstanceState(outState);
    }

    @Override
    public void onViewStateRestored(@Nullable Bundle savedInstanceState) {
        if (firstCall)
            operations = savedInstanceState.getParcelableArrayList(Keys.CURRENT_OPERATIONS.name());
        super.onViewStateRestored(savedInstanceState);
    }