android studio 竖屏变横屏数据不消失
时间: 2023-06-28 15:05:18 浏览: 104
在 Android 中,当屏幕方向发生改变时,Activity 会被销毁并重新创建。这意味着,在屏幕方向发生改变时,Activity 的所有成员变量都会被重置并且需要重新初始化。
如果你希望在屏幕方向发生改变时保留数据,一种解决方案是使用 onSaveInstanceState() 方法。这个方法会在 Activity 被销毁之前调用,你可以在其中保存数据和状态信息。当 Activity 被重新创建时,可以在 onCreate() 或 onRestoreInstanceState() 方法中恢复数据和状态信息。
以下是一个简单的例子,演示了如何在 Activity 中保存和恢复数据:
```java
public class MainActivity extends AppCompatActivity {
private int mCount = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState != null) {
mCount = savedInstanceState.getInt("count");
}
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mCount++;
TextView textView = findViewById(R.id.text_view);
textView.setText(String.valueOf(mCount));
}
});
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("count", mCount);
}
}
```
在这个例子中,我们使用了一个成员变量 `mCount` 来记录用户点击按钮的次数。在 `onCreate()` 方法中,我们检查 `savedInstanceState` 是否为 `null`,如果不是,说明 Activity 正在重新创建,我们就从 `savedInstanceState` 中恢复 `mCount` 的值。在点击按钮时,我们增加 `mCount` 的值,并将其显示在 TextView 中。在 `onSaveInstanceState()` 方法中,我们将 `mCount` 的值保存到 Bundle 中。
这样,当屏幕方向发生改变时,Activity 会被销毁并重新创建,但是我们保存的数据会被恢复并显示在界面上,从而实现了数据不消失的效果。
阅读全文