Mar*_*023 0 android landscape-portrait
我有一个Adapter班级和一个MainActivity. 班级Adapter显示孩子们的姓名列表,在姓名旁边,还显示time他们到达学校的时间。问题是当我旋转到横向时,这些time值会丢失。
我考虑在我的清单中添加MainActivity
android:configChanges="orientation|keyboardHidden|screenSize"
Run Code Online (Sandbox Code Playgroud)
发生的情况是,时间值在横向模式下不会丢失,但布局的外观与纵向模式相同。实际上,横向布局看起来与纵向布局有点不同。
在这种情况下我该怎么做才能获得time值并保持景观布局的外观。
有 2 个选项:
onSaveInstanceState(Bundle outState)方法 - 保存数据并在旋转后恢复它们(在onCreate(Bundle savedInstanceState)或 中onRestoreInstanceState(Bundle savedInstanceState))例子:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable("time_data", (Seriazable) mTimeList);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
if (savedInstanceState != null) {
// restore value of members from saved state
mTimeList = savedInstanceState.getSerializable("time_data");
}
...
}
Run Code Online (Sandbox Code Playgroud)
例子:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2759 次 |
| 最近记录: |