如题,
假设进入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);
}