activity使用fragment transaction.commit()进行fragment切换,activity被系统回收后再点应用就无法切换

原创 2017年01月02日 22:14:01
/**
 * 
 */
package com.cn.xm.yunluhealth.ui.set;

import java.util.ArrayList;
import java.util.List;

import net.tsz.afinal.http.AjaxCallBack;
import android.app.Dialog;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.cn.xm.yunluhealth.BaseActivity;
import com.cn.xm.yunluhealth.callback.TokenCallback;
import com.cn.xm.yunluhealth.entity.DTime;
import com.cn.xm.yunluhealth.entity.wrapper.EntityWrapper;
import com.cn.xm.yunluhealth.ui.set.fragment.FridayFragment;
import com.cn.xm.yunluhealth.ui.set.fragment.MondayFragment;
import com.cn.xm.yunluhealth.ui.set.fragment.SaturdayFragment;
import com.cn.xm.yunluhealth.ui.set.fragment.SundayFragment;
import com.cn.xm.yunluhealth.ui.set.fragment.ThursdayFragment;
import com.cn.xm.yunluhealth.ui.set.fragment.TuesdayFragment;
import com.cn.xm.yunluhealth.ui.set.fragment.WednesdayFragment;
import com.cn.xm.yunluhealth.util.Apis;
import com.cn.xm.yunluhealth.util.Common;
import com.cn.xm.yunluhealth.util.NetUtil;
import com.cn.xm.yunluhealth.util.UIHelper;
import com.cn.xm.yunluhealth.util.UserUtils;
import com.cn.xm.yunluhealthd.R;
import com.google.gson.Gson;

/**
 * 设置接诊时间
 * 
 * @author dpy
 * 
 */
public class SetHelpTimeActivity extends BaseActivity implements
OnClickListener {
private LinearLayout llMonday;
private TextView tvMonday;
private ImageView ivMonday;
private LinearLayout llTuesday;
private TextView tvTuesday;
private ImageView ivTuesday;
private LinearLayout llWednesday;
private TextView tvWednesday;
private ImageView ivWednesday;
private LinearLayout llThursday;
private TextView tvThursday;
private ImageView ivThursday;
private LinearLayout llFriday;
private TextView tvFriday;
private ImageView ivFriday;
private LinearLayout llSaturday;
private TextView tvSaturday;
private ImageView ivSaturday;
private LinearLayout llSunday;
private TextView tvSunday;
private ImageView ivSunday;
private MondayFragment mondayFragment;
private TuesdayFragment tuesdayFragment;
private WednesdayFragment wednesdayFragment;
private List<Fragment> fragments = new ArrayList<Fragment>();
private FragmentManager fragmentManager;
private FragmentTransaction transaction;
private ThursdayFragment thursdayFragment;
private FridayFragment fridayFragment;
private SaturdayFragment saturdayFragment;
private SundayFragment sundayFragment;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setCenterTitle("设置与帮助");
enableBackButton(R.drawable.regist_back);
setContentView(R.layout.set_help_time);
mBtnTitleRight.setVisibility(View.VISIBLE);
mBtnTitleRight.setText(" 提交 ");
mBtnTitleRight.setBackgroundResource(R.drawable.btn_commit);
mBtnTitleRight.setOnClickListener(this);// 未实现
initViews();
}

private void initViews() {
// TODO Auto-generated method stub
llMonday = (LinearLayout) findViewById(R.id.llMonday);
tvMonday = (TextView) findViewById(R.id.tvMonday);
llMonday.setSelected(true);
ivMonday = (ImageView) findViewById(R.id.ivMonday);
ivMonday.setVisibility(View.VISIBLE);
llTuesday = (LinearLayout) findViewById(R.id.llTuesday);
tvTuesday = (TextView) findViewById(R.id.tvTuesday);
ivTuesday = (ImageView) findViewById(R.id.ivTuesday);
llWednesday = (LinearLayout) findViewById(R.id.llWednesday);
tvWednesday = (TextView) findViewById(R.id.tvWednesday);
ivWednesday = (ImageView) findViewById(R.id.ivWednesday);
llThursday = (LinearLayout) findViewById(R.id.llThursday);
tvThursday = (TextView) findViewById(R.id.tvThursday);
ivThursday = (ImageView) findViewById(R.id.ivThursday);
llFriday = (LinearLayout) findViewById(R.id.llFriday);
tvFriday = (TextView) findViewById(R.id.tvFriday);
ivFriday = (ImageView) findViewById(R.id.ivFriday);
llSaturday = (LinearLayout) findViewById(R.id.llSaturday);
tvSaturday = (TextView) findViewById(R.id.tvSaturday);
ivSaturday = (ImageView) findViewById(R.id.ivSaturday);
llSunday = (LinearLayout) findViewById(R.id.llSunday);
tvSunday = (TextView) findViewById(R.id.tvSunday);
ivSunday = (ImageView) findViewById(R.id.ivSunday);

llMonday.setOnClickListener(this);
llTuesday.setOnClickListener(this);
llWednesday.setOnClickListener(this);
llThursday.setOnClickListener(this);
llFriday.setOnClickListener(this);
llSaturday.setOnClickListener(this);
llSunday.setOnClickListener(this);
// 添加fragment
mondayFragment = new MondayFragment();
tuesdayFragment = new TuesdayFragment();
wednesdayFragment = new WednesdayFragment();
thursdayFragment = new ThursdayFragment();
fridayFragment = new FridayFragment();
saturdayFragment = new SaturdayFragment();
sundayFragment = new SundayFragment();
fragments.add(mondayFragment);
fragments.add(tuesdayFragment);
fragments.add(wednesdayFragment);
fragments.add(thursdayFragment);
fragments.add(fridayFragment);
fragments.add(saturdayFragment);
fragments.add(sundayFragment);
fragmentManager = this.getSupportFragmentManager();
transaction = fragmentManager.beginTransaction();
transaction.add(R.id.container, mondayFragment);
transaction.add(R.id.container, tuesdayFragment);
transaction.add(R.id.container, wednesdayFragment);
transaction.add(R.id.container, thursdayFragment);
transaction.add(R.id.container, fridayFragment);
transaction.add(R.id.container, saturdayFragment);
transaction.add(R.id.container, sundayFragment);
transaction.commit();
selectOrderTime = new ArrayList<DTime>();
}

/**
 * 更改Fragment对象
 * 
 * 
 * 
 * 
 * @param index
 */
private void switchFragment(int index) {
transaction = fragmentManager.beginTransaction();
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
for (int i = 0; i < fragments.size(); i++) {
if (index == i) {
transaction.show(fragments.get(index));
} else {
transaction.hide(fragments.get(i));
}
}
transaction.commit();
}

private ArrayList<DTime> selectOrderTime;
private Dialog waitingDialog;

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

switch (v.getId()) {
case R.id.llMonday:
switchFragment(0);
tvMonday.setSelected(true);
ivMonday.setVisibility(View.VISIBLE);
tvTuesday.setSelected(false);
ivTuesday.setVisibility(View.INVISIBLE);
tvWednesday.setSelected(false);
ivWednesday.setVisibility(View.INVISIBLE);
tvThursday.setSelected(false);
ivThursday.setVisibility(View.INVISIBLE);
tvFriday.setSelected(false);
ivFriday.setVisibility(View.INVISIBLE);
tvSaturday.setSelected(false);
ivSaturday.setVisibility(View.INVISIBLE);
tvSunday.setSelected(false);
ivSunday.setVisibility(View.INVISIBLE);

break;

case R.id.btn_title_right:
commit();
break;
default:
break;
}
}

private void commit() {
if (!NetUtil.hasNetWrok(mContext)) {
// 保存数据到数据库。。。
return;
}
waitingDialog = UIHelper.getWaitingDialog(mContext, "正在修改...");
waitingDialog.show();
// 设置预约时间
selectOrderTime.addAll(mondayFragment.getSelectOrderTime());
selectOrderTime.addAll(tuesdayFragment.getSelectOrderTime());
selectOrderTime.addAll(wednesdayFragment.getSelectOrderTime());
selectOrderTime.addAll(thursdayFragment.getSelectOrderTime());
selectOrderTime.addAll(fridayFragment.getSelectOrderTime());
selectOrderTime.addAll(saturdayFragment.getSelectOrderTime());
selectOrderTime.addAll(sundayFragment.getSelectOrderTime());
UserUtils.getToken(mContext, new TokenCallback() {

@Override
public void getToken(String token, String doctorid) {
if (!token.equals("false")) {
Apis.reservationTime(ajaxCallBack, token, doctorid,
new Gson().toJson(selectOrderTime));
} else {
waitingDialog.dismiss();
}

}
});
}

AjaxCallBack<String> ajaxCallBack = new AjaxCallBack<String>() {
@Override
public void onFailure(Throwable t, int errorNo, String strMsg) {
// TODO Auto-generated method stub
super.onFailure(t, errorNo, strMsg);
Common.print(strMsg);
waitingDialog.dismiss();
}

@Override
public void onSuccess(String t) {
// TODO Auto-generated method stub
super.onSuccess(t);
Common.print(t);
waitingDialog.dismiss();
EntityWrapper wrapper = new Gson().fromJson(t, EntityWrapper.class);
if (wrapper.getStatus().equals("1")) {
UIHelper.showToast(mActivity, "设置成功");
mActivity.finish();
} else {
UIHelper.showToast(mActivity, wrapper.getMsg());
}
};

};

}
,点击无反应,求大神指导

程序后台Activity被回收后再次启动fragment失效问题

出现的问题 最近在做项目的时候,遇到了fragment切换失效的问题,也就是fragment重叠的问题。当我点击fragment对应tab键时,通过hide隐藏其他三个fragment,通过show...
  • xbw12138
  • xbw12138
  • 2016年07月01日 23:45
  • 12040

activity被回收,fragment恢复处理

例如activity放在后台一段时间,当activity被回收之后,再重新进入activity的时候,会重新调用onCreate(),并且savedInstanceState不再是null,因此可以判...
  • w958796636
  • w958796636
  • 2016年02月01日 11:31
  • 4273

如何处理Activity横竖屏切换时 fragment会添加一个被又new一次的现象

当屏幕发生旋转,Activity发生重新启动,依附在Activity中的Fragment也会跟着Activity重新创建; 这样造成当旋转的时候,本身存在的Fragment会重新启动,然后当执行Ac...
  • qq591920734
  • qq591920734
  • 2015年01月20日 15:33
  • 1386

关于fragment,activity被回收之后重新恢复

关于activity、fragment被回收后重新恢复相关
  • u011424451
  • u011424451
  • 2016年09月17日 00:28
  • 770

activity使用fragment transaction.commit()进行fragment切换,activity被系统回收后再点应用就无法切换

/**  *   */ package com.cn.xm.yunluhealth.ui.set; import java.util.ArrayList; import java.util.List...
  • qianchen4564
  • qianchen4564
  • 2017年01月02日 07:22
  • 98

fragment切换Activity后再返回,view重叠。

大家在使用fragment的时候。选择使用hide和show的方式重复利用。 我的设计是这样的: activityA中设计了多个Fragment按钮,fragment1,fragment2,fragm...
  • qq895767507
  • qq895767507
  • 2016年04月25日 16:20
  • 700

Activity被回收后Fragment嵌套的Fragment不显示问题

在公司的项目中遇到一种情况,Activity被回收后Fragment嵌套的Fragment不显示。一开始以为是没有把之前嵌套的fragment给清空掉得原因,后来用代码检测,把之前的fragment清...
  • u012224845
  • u012224845
  • 2015年12月17日 17:05
  • 792

Activity 被回收之后,Fragment的堆栈变化

在Android开发中,如果我们用到V4包里面的Fragment,在应用被切换到后台的时候,Activity可能被回收,但是创建的所有Fragment则会被保存到Bundle里面,下面是Fragmen...
  • luoyinhan
  • luoyinhan
  • 2014年12月25日 11:52
  • 1431

Activity回收时候fragment的异常

在Android开发中,如果我们用到V4包里面的Fragment,在应用被切换到后台的时候,Activity可能被回收,但是创建的所有Fragment则会被保存到Bundle里面,下面是Fragmen...
  • zhangfei2018
  • zhangfei2018
  • 2015年11月18日 18:37
  • 1429

资源回收导致重建 Activity和 Fragment

原文标题:Android中管理多个Fragment的最佳实践,完美解决保存状态与重影问题 自从在Android 3.0引入Fragment以来,它被使用的频率也随之增多。Fragment带来的好处...
  • Buaaroid
  • Buaaroid
  • 2016年01月29日 10:14
  • 3957
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:activity使用fragment transaction.commit()进行fragment切换,activity被系统回收后再点应用就无法切换
举报原因:
原因补充:

(最多只允许输入30个字)