需求如下:
Activity A屏幕纵向,Activity B横向,需要让用户在A跳转至B,在B输入资料后把输入结果返回A。
坑1:在B获取成功后返回A,屏幕会有短暂黑屏
坑2:在A设置startActivityForResult跳转至B,同时重写onResult接收B返回内容,B代码调用setResult,需要A的启动模式设置为SingleTask或SingleInstance,设置后发现在A调用startActivityForResult会立即回调onResult
换了个解决问题思路:一个Activity加载layoutA和layoutB
但需要解决:
1、android屏幕纵横屏切换,Activity的onDestroy和onCreate方法会被调用,需要避免Activity在转屏时销毁
2、动态更改屏幕方向
解决问题1:
修改AndroidManifest.xml,在activity属性中加入:
android:configChanges=”orientation|keyboardHidden”
android:configChanges,这个方法主要是负责列出清单,当清单上用户指定的设置改变时,Activity会自己处理这些变化。
orientation,屏幕界面旋转(可能是用户手动旋转的),【注意:如果你的开发API等级等于或高于13,你还需要设置screenSize,因为screenSize会在屏幕旋转时改变】
keyboardHidden,键盘辅助功能改变
解决问题2:
a)在AndroidManifest.xml文件里设置默认方向,不然程序不能正常工作。
android:screenOrientation="portrait"
b)
参考代码:
public void onClick(View v) {
//如果是竖排,则改为横排
if(getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
//如果是横排,则改为竖排
else if(getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}