文档章节

当你的项目中使用fragment的replace的时候,如何正确使用返回键去规避fragment重叠

徐干稳
 徐干稳
发布于 2015/10/08 12:40
字数 409
阅读 83
收藏 0
package com.gbkj.management;

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

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;
import cn.gbkj.management.R;

import com.gbkj.management.fragment.FunctionFragment1;
import com.gbkj.management.fragment.FunctionFragment2;
import com.gbkj.management.fragment.FunctionFragment3;
import com.gbkj.management.fragment.FunctionFragment4;
import com.gbkj.management.fragment.FunctionFragment5;

public class MainActivity extends FragmentActivity implements OnCheckedChangeListener {

    private List<String> mDatas;
    private FrameLayout fl_main;
    private TextView tv_title;
    private ArrayList<Fragment> fragments;
    private RadioGroup rg_main;
    
    private Button bt_return;
    public Fragment currentFragment;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        fl_main=(FrameLayout)findViewById(R.id.fl_main);
        tv_title=(TextView)findViewById(R.id.tv_title);
        rg_main=(RadioGroup)findViewById(R.id.rg_main);
        init();
        
    }
    
    @Override
    protected void onResume() {
        super.onPause();
        rg_main.setOnCheckedChangeListener(this);
        rg_main.check(R.id.rb_mytask);
    }
    /**
     * 修改头部文本的接口方法
     * @param text
     */
    public void setTitleText(String text){
        tv_title.setText(text);
    
    }

    private void init() {
        mDatas=new ArrayList<String>();
        mDatas.add("我的任务");
        mDatas.add("我的留言");
        mDatas.add("待收任务");
        mDatas.add("请求协助");
        mDatas.add("我的同事");
        
        fragments=new ArrayList<Fragment>();
        fragments.add(new FunctionFragment1());
        fragments.add(new FunctionFragment2());
        fragments.add(new FunctionFragment3());
        fragments.add(new FunctionFragment4());
        fragments.add(new FunctionFragment5());
    }
    
    
    /*    
    @Override
    public void onItemClick(AdapterView<?> parent, View convertView, final int position, long arg3) {
            //fl_main.removeAllViews();
            adapter.setCurentPosition(position);
            tv_title.setText(mDatas.get(position));
            new Thread(new Runnable() {
                @Override
                public void run() {
                    switchFragment(fragments.get(position));
                }
            }).start();
    }*/
    
    
    //返回按钮
    public void back(View v){
        startActivity(new Intent(this,LoginActivity.class));
    }
    
    //替换fragment
    public void switchFragment(Fragment fragment,String tag){
        fl_main.removeAllViews();
        getSupportFragmentManager().beginTransaction().replace(R.id.fl_main, fragment,tag).commit();
    }
    
    
    @Override
    public void onCheckedChanged(RadioGroup arg0, int checkId) {
        switch (checkId) {
        case R.id.rb_mytask:
            tv_title.setText(mDatas.get(0));
            switchFragment(fragments.get(0),"function1");
            break;
        case R.id.rb_message:
            tv_title.setText(mDatas.get(1));
            switchFragment(fragments.get(1),"function2");
            break;
        case R.id.rb_task_coming:
            tv_title.setText(mDatas.get(2));
            switchFragment(fragments.get(2),"function3");
            break;
        case R.id.rb_help:
            tv_title.setText(mDatas.get(3));
            switchFragment(fragments.get(3),"function4");
            break;
        case R.id.rb_workmate:
            tv_title.setText(mDatas.get(4));
            switchFragment(fragments.get(4),"function5");
            break;    
        default:
            break;
        }
    }
    
    @Override
    public boolean onKeyDown(final int keyCode, final KeyEvent event) {

        if(keyCode==KeyEvent.KEYCODE_BACK){
        //我觉得参考的朋友们有必要想想我这里为什么要开一个线程
            if(fragments.contains(currentFragment)){
                new Thread(new Runnable() {
                    
                    @Override
                    public void run() {
                        finish();
                    }
                }).start();
                
            }else{
                return super.onKeyDown(keyCode, event);
            }
        }
        return true;
    }
}


© 著作权归作者所有

徐干稳
粉丝 1
博文 25
码字总数 7783
作品 0
武汉
私信 提问
多个Fragment界面重叠和拍照闪退问题

记录最近遇到的多个Fragment界面重叠和调用系统相机拍照闪退问题,同时总结解决方案。 ------------------------------------------------------------------------------------------------...

shzwork
10/03
14
0
Android Fragment使用(一) 基础篇 温故知新

Fragment使用基础 Fragment添加 方法一: 布局里的标签标识符: tag, id, 如果都没有, container的id将会被使用. 方法二: 动态添加动态添加利用了一个transaction: commit()方法并不立即执行t...

ForingY
2016/08/02
7
0
Fragment面试你所需知道的一切

1. 什么是Fragment: Fragment,俗称碎片,自Android 3.0开始被引进并大量使用。作为Activity界面的一部分,Fragment的存在必须依附于Activity,并且与Activity一样,拥有自己的生命周期,同...

浮生若梦zp
2017/12/01
0
0
Android fragment 重叠问题——通过hide,show方式导致的解决方法

最近在做项目的时候,遇到了fragment重叠的问题。具体的情况是,我在一个fragment中,通过add的到FragmentTransaction的方式,又放了四个子fragment allFrg,movieFrg,newsFrg,otherFrg。当...

新年
2015/05/21
29.6K
5
你真的会用Fragment吗?Fragment复用的那些事儿

作者: @怪盗kidou 如需转载不得删除本文中的任何内容(含本段) 如果博客中有不恰当之处欢迎在原文中留言交流 https://www.jianshu.com/p/31f013df7580 大家好,好像距离上次发布博客好像又...

怪盗kidou
2018/05/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
12
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部