onCreate()中的方向更新触发

时间:2017-12-15 01:19:40

标签: android android-orientation

好的家伙,这里的作业相关问题。不,我不需要你编写代码,但我希望有人可以帮助我理解为什么这样做。

在我的onCreate()函数中,我有这段代码

    boolean layout = getResources().getConfiguration().orientation == 1;
    TextView lo = findViewById(R.id.layout);
    if (layout) {
        lo.setText(R.string.port);
    } else {
        lo.setText(R.string.land);
    }

它正常工作,并且改变了TextView中的字符串,正如我预期的那样,它会在屏幕方向改变时发生变化,但这会解决我的问题。我想(我猜错了)每次你旋转设备时,它再次点击创建,重新绘制屏幕。

在我的脑海中继续使用这个模型我找到了here,并且想要扩展它,我决定在主活动中设置一个int,然后在onCreate()中增加它,以及一个TextView每次屏幕旋转时都会更新。

    TextView oc = findViewById(R.id.count);
    num++;
    oc.setText(valueOf(num));
令我沮丧的是,无论我旋转多少次,它都不会超过一个,而方向部分总是会闪光。

希望有人可以告诉我为什么方向会在每次旋转时触发,但另一部分则没有。提前谢谢,火焰离开!

2 个答案:

答案 0 :(得分:0)

尝试以我的方式解释它,它不会增加,因为数据(你的int)没有保存在任何地方,并且在方向改变时会丢失。如果您希望实现相同的目标,可以覆盖onSavedInstanceState()。

答案 1 :(得分:0)

每次方向更改时,您的活动都会重新创建,这意味着您将获得活动类的新实例,因此将重新创建任何非静态字段。此外,如果您使您的字段保持静态,则不保证在您的旧活动被销毁时您的流程不会终止(但很可能它不会被终止)。

如果您想阻止您的活动在方向更改时被销毁,请将这些行添加到清单:

android:configChanges="orientation|screenSize"