处理Fragments跳转时会黑屏的问题,
Fragment跳转时会黑屏的问题
onCreate()中加代码
getWindow().setFormat(PixelFormat.TRANSLUCENT);//处理有地图的Fragment第一次切换时 会黑屏闪一下的问题。
跳转时加代码
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); //去掉切换Fragment时闪动的动画效果
package com.szyc.carbodyguard.activitys;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Context;
import android.content.Intent;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.szyc.carbodyguard.bean.FirstEvent;
import com.szyc.carbodyguard.bean.VehicleInfoBean;
import com.szyc.carbodyguard.fragment.RealTimeTrackingFragment;
import com.szyc.carbodyguard.fragment.TrackPlayBackFragment;
import com.szyc.carbodyguard.fragment.VehicleInformationFragment;
import com.szyc.silenteagle.R;
import com.szyc.silenteagle.activitys.BaseActivity;
import de.greenrobot.event.EventBus;
/**
* 项目名称:SilentEagle
* 类描述:车辆信息,实时追踪,轨迹播放页面
* 创建人:wangheping
* 创建时间:2016/7/20 17:17
* 修改人:Administrator
* 修改时间:2016/7/20 17:17
* 修改备注:
*/
public class VehicleRelatedActivity extends BaseActivity {
private Context mContext=this;
private RelativeLayout mBack;//后退
private TextView mTitleName;//标题
private TextView mClxx;//车辆信息
private TextView mSszz;//实时追踪
private TextView mGjhf;//轨迹回放
private VehicleInformationFragment mVehicleInformationFragment;//车辆信息
private RealTimeTrackingFragment mRealTimeTrackingFragment;//实时追踪
private TrackPlayBackFragment mTrackPlayBackFragment;//轨迹回放
private int v_id;//车辆id
private VehicleInfoBean.vehcTrackList mObject;
private String mplate = "";
private String mplates = "";
private int currentmenu;//当前选项
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.vehicle_related_activity);
getWindow().setFormat(PixelFormat.TRANSLUCENT);//处理有地图的Fragment第一次切换时 会黑屏闪一下的问题。renhaijun add
EventBus.getDefault().register(this);
initView();
bind();
setOnclickListener();
switchMenu(1);
}
private void initView() {
//后退按钮
mBack = (RelativeLayout) findViewById(R.id.topTitle_leftRl);
//标题
mTitleName = (TextView) findViewById(R.id.topTitle_middleTv);
//车辆信息
mClxx = (TextView) findViewById(R.id.clxx);
//实时追踪
mSszz = (TextView) findViewById(R.id.sszz);
//轨迹回放
mGjhf = (TextView) findViewById(R.id.gjhf);
}
private void bind() {
Intent intent = getIntent();
v_id = intent.getIntExtra("v_id", 0);
mplate = intent.getStringExtra("v_plate");
}
/**
* 设置click 事件监听
*/
private void setOnclickListener() {
mBack.setOnClickListener(mOnClickListener);//后退按钮
mClxx.setOnClickListener(mOnClickListener);//车辆信息
mSszz.setOnClickListener(mOnClickListener);//实时追踪
mGjhf.setOnClickListener(mOnClickListener);//轨迹回放
}
View.OnClickListener mOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.topTitle_leftRl://后退
finish();
break;
case R.id.clxx:
switchMenu(1);
break;
case R.id.sszz:
switchMenu(2);
break;
case R.id.gjhf:
switchMenu(3);
break;
}
}
};
private void switchMenu(int menu) {
if (menu==currentmenu)
return;
//每次切换都先设置默认字体颜色和icon
setDefalutMenu();
//获取fragment控制器
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); //去掉切换Fragment时闪动的动画效果
//每个Fragment传递车辆id
Bundle bundle = new Bundle();
bundle.putInt("v_id", v_id);
bundle.putString("V_PLATES", mplate);
switch (menu) {
case 1:
mTitleName.setText(R.string.clxx);
mClxx.setBackgroundResource(R.color.textColor_30B3F3);
mVehicleInformationFragment = new VehicleInformationFragment();
mVehicleInformationFragment.setArguments(bundle);
fragmentTransaction.replace(R.id.vehicle_related_fragment, mVehicleInformationFragment);
fragmentTransaction.commit();
break;
case 2:
mTitleName.setText(R.string.sszz);
mSszz.setBackgroundResource(R.color.textColor_30B3F3);
mRealTimeTrackingFragment = new RealTimeTrackingFragment();
mRealTimeTrackingFragment.setArguments(bundle);
fragmentTransaction.replace(R.id.vehicle_related_fragment, mRealTimeTrackingFragment);
fragmentTransaction.commit();
break;
case 3:
mTitleName.setText(R.string.gjhf);
mGjhf.setBackgroundResource(R.color.textColor_30B3F3);
mTrackPlayBackFragment = new TrackPlayBackFragment();
if (!TextUtils.isEmpty(mplates)) {
bundle.putString("V_PLATES", mplates);//车牌
bundle.putString("VT_STARTTIME", mObject.getVT_STARTTIME());//开始时间
bundle.putString("VT_ENDTIME", mObject.getVT_ENDTIME());//结束时间
}
mTrackPlayBackFragment.setArguments(bundle);
fragmentTransaction.replace(R.id.vehicle_related_fragment, mTrackPlayBackFragment);
fragmentTransaction.commit();
break;
}
currentmenu=menu;
}
/**
* 设置顶部menu默认icon和颜色
*/
private void setDefalutMenu() {
mClxx.setBackgroundResource(R.color.textColor_96a2a8);
mSszz.setBackgroundResource(R.color.textColor_96a2a8);
mGjhf.setBackgroundResource(R.color.textColor_96a2a8);
}
public void onEventMainThread(FirstEvent event) {
if (event.getMsg().equals("intent_trackplay")) {
mObject = event.getObject();
mplates = event.getPlate();
switchMenu(3);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);//注销EventBus
}
}