这篇文章给大家介绍Android应用中是如何实现横竖屏切换的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
横竖屏切换的过程,会经历onDestroy和onCreate。通俗点说,就是这个activity关闭了,有新起来一个activity。那么,前一个activity的数据肯定都不存在了。虽然这样的切换,你的EditText上输入的内容还在,但是一定要记得,成员变量都是空的啦。数据保存成了一个问题。
保存整个activity的方案
在Manifest里对于的activity加上这个配置就不会重走销毁和创建了,如下:
android:configChanges="orientation|keyboardHidden|screenSize"
不要高兴的太早,除非你不需要改变横竖屏的布局,否则这个方案仍然要有很多工作要做。
还是乖乖的保存数据吧
onRetainNonConfigurationInstance()被弃用了,我们还是用onSaveInstanceState吧。针对横竖屏不同的布局,我们只需在创建一个layout-land文件夹,里面放同名的布局文件,onCreate时会自动加载相对应的横竖屏布局。
在横竖屏切换的过程中会经历onSaveInstanceState,给你一个保存数据的机会:
@Override
public void onSaveInstanceState(Bundle outState) {
Log.i("linc", "onSaveInstanceState(Bundle)");
super.onSaveInstanceState(outState);
outState.putString(TEXT_ONE, ""+editText1.getTag(R.id.tag_first));//avoid null point
// outState.putSerializable();//object
}
在onCreate中把数据取出来:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_land_port_switch);
Log.e("linc","oncreate");
editText1 = (EditText)findViewById(R.id.txt1);
// Restore saved state.
if (savedInstanceState != null) { editText1.setTag(R.id.tag_first,savedInstanceState.getString(TEXT_ONE));
}
}
关于Android应用中是如何实现横竖屏切换的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。