Android横竖屏切换后,重新设置activity布局,ViewPager上无法正确显示Fragment
来源:互联网 发布:excel表格数据无法编辑 编辑:程序博客网 时间:2024/06/05 23:49
如题,
假设进入Activity时是竖屏状态,然后切换到横屏:
切换布局都做到了,现在的情况就是在第一次切换横屏的时候,ViewPager不会显示Fragment,切换回去竖屏的时候会恢复原来的样子,然后在次切换到横屏ViewPager就正常显示了。
切换的布局是:
已经给Activity设置了:
这个是OnCreate方法:
这个是重新填充数据的:
@Override
public void onConfigurationChanged(Configuration newConfig) {
clearnSurface();//清除Surface
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
//land横屏
Log.i("切换", "-横屏");
//横屏布局,并设为全屏
setContentView(activity_block_land);
params.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setAttributes(params);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
//port竖屏
Log.i("切换", "-竖屏");
//竖屏布局,并设为非全屏
setContentView(activity_block);
params.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().setAttributes(params);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
initeActivity();//重新绑定控件和设置监听
init();//还原数据(非重新获取,数据保存着的)
}
假设进入Activity时是竖屏状态,然后切换到横屏:
切换布局都做到了,现在的情况就是在第一次切换横屏的时候,ViewPager不会显示Fragment,切换回去竖屏的时候会恢复原来的样子,然后在次切换到横屏ViewPager就正常显示了。
切换的布局是:
activity_block = LayoutInflater.from(this).inflate(R.layout.activity_block, null, true);
activity_block_land = LayoutInflater.from(this).inflate(R.layout.activity_block_land, null, true);
已经给Activity设置了:
android:configChanges="keyboardHidden|orientation|screenSize"
这个是OnCreate方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
params = getWindow().getAttributes();
activity_block = LayoutInflater.from(this).inflate(R.layout.activity_block, null, true);//竖屏布局
activity_block_land = LayoutInflater.from(this).inflate(R.layout.activity_block_land, null, true);//横屏布局
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
//land横屏
Log.i("当前", "-横屏");
setContentView(activity_block_land);
params.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setAttributes(params);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
//port竖屏
Log.i("当前", "-竖屏");
setContentView(activity_block);
params.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().setAttributes(params);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
uuid = getIntent().getStringExtra("blockUuid");
if (!initeActivity()) {//绑定控件
this.finish();
return;
}
fragmentEquipment_state = new Block_Status();//fragment1
fragmentEquipment_control = new Block_Device();//framgent2
adapter = new Block_ViewPagerAdapter(getSupportFragmentManager(), BlockActivity.this);//viewpager1的adapter
adapter.addFragment(fragmentEquipment_state, "传感");//把fragment1添加到adapter
adapter.addFragment(fragmentEquipment_control, "控制");//把fragment2添加到adapter
blockResolve = new BlockResolve(BlockActivity.this);//实例化数据处理类,所有网络请求过来的数据将放在这里保存
blockResolve.setmHandler(handler_block);
if (videoPlayer == null) {
videoPlayer = new VideoPlayer();//视频播放处理类
}
getData();//请求数据
registerReceiver();//注册网络变化广播
}
private boolean initeActivity() {
findViews();//里面都是些绑定控件(findViewById)
m_osurfaceView.getHolder().addCallback(this);
setListeners();//绑定控件的监听事件
return true;
}
这个是重新填充数据的:
public void init() {
area_name.setText(getIntent().getStringExtra("from"));
block_name.setText(getIntent().getStringExtra("fromCild"));
videoPlayer.setSurfaceView(m_osurfaceView);
setViewPager();//有问题的ViewPager,viewpager1
setWeather();
setTabSelection(0);//默认第一页
initViewPager();//这个是显示纯图片的轮播图的ViewPager,没有出现问题
blockResolve.firstSetData();//给viewpager1上的fragment填充数据
setStatus();//设置视频播放状态
}
//设置viewPager
private void setViewPager() {
viewPager.setAdapter(adapter);
viewPager.setOffscreenPageLimit(adapter.getCount());
tabLayout.setupWithViewPager(viewPager);
tabLayout.setTabMode(TabLayout.MODE_FIXED);
}
0 0
- Android横竖屏切换后,重新设置activity布局,ViewPager上无法正确显示Fragment
- 横竖屏切换,activity结合fragment的导航布局
- android activity横竖屏切换,Activity重新创建问题解决!
- Android 禁止Activity横竖屏切换时重新加载
- 解决android横竖屏切换activity重新创建
- android 横竖屏切换 不重新加载activity
- Android之屏幕方向|显示方式|Activity重建问题|横竖屏切换不同的布局
- android,横竖屏切换fragment
- Android Activity横竖屏切换
- Android设置切换横竖屏时不让Activity重启
- 横竖屏切换后不重建Activity
- Activity横竖屏切换后的生命周期
- Android 横竖屏切换不重新加载
- viewpager + frgment 横竖屏切换 问题 Fragment被调用两次。
- Android横竖屏切换正确实现方式
- 横竖屏切换时,禁止activity重新创建,android:configChanges="keyboardHidden|orientation" 不起作用
- 横竖屏切换时,禁止activity重新创建,android:configChanges="keyboardHidden|orientation" 不起作用
- 横竖屏切换时,禁止activity重新创建,android:configChanges="keyboardHidden|orientation" 不起作用
- Makefile/cmake/node-gyp中区分不同平台的方法
- S2第三章
- Android如何使代码等待一段时间再执行?直接贴程序麻烦高人来看一下。
- Laravel5.1 实现第三方登录认证(包括微博、QQ、微信、豆瓣)
- IOS SIP协议开发
- Android横竖屏切换后,重新设置activity布局,ViewPager上无法正确显示Fragment
- 怎么解决tomcat占用8080端口问题
- Android VideoView加载网络视频过程中退出页面,出现程序无响应 希望来大神指点一二
- 请教一个关于代码格式(排版)化的问题
- PostMessage(异步)和SendMessage(同步)的区别
- 【寒江雪】模板技术
- android 百度云推送
- WebView 通过JS 设置字体
- ClassLoader 详解及用途