Fragment之间的切换

利用Fragment实现界面跳转的功能,完成效果图如图:

主界面代码如下:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="cn.edu.niit.pageredirecting.MainActivit<LinearLayo    android:id="@+id/show"
    android:layout_width="match_parent"    android:layout_height="0dp"    android:orientation="vertical"    android:layout_weight="1">

</LinearLayout>

<LinearLayout    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="0dp"    android:layout_weight="1">

<Button        android:id="@+id/bt_show"        android:layout_width="250dp"        android:layout_height="wrap_content"        android:text="@string/bt_show"        android:layout_gravity="center_horizontal"        android:gravity="center"        android:onClick="onClick"        /></LinearLayout>

</LinearLayout>第一个Fragment的布局代码:<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:tools="http://schemas.android.com/tools"  android:layout_width="match_parent"  android:layout_height="match_parent"  tools:context="com.example.a15083.fragmentandactivity.FirstFragment"> <TextView  android:layout_width="match_parent"  android:layout_height="match_parent"  

android:gravity="center"  android:textSize="25sp"  android:text="@string/first_fragment" /> </FrameLayout>第二个Fragment布局代码:<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:tools="http://schemas.android.com/tools"  android:layout_width="match_parent"  android:layout_height="match_parent"  tools:context="com.example.a15083.fragmentandactivity.SecondFragment"> <TextView  android:layout_width="match_parent"  android:layout_height="match_parent"  android:background="@color/colorAccent"  android:gravity="center"  android:text="@string/second_fragment"  android:textSize="25sp" /> </FrameLayout>Java部分代码如下:
package cn.edu.niit.pageredirecting;
        import android.app.FragmentManager;        import android.app.FragmentTransaction;        import android.support.v7.app.AppCompatActivity;        import android.os.Bundle;        import android.view.KeyEvent;        import android.view.View;        import android.widget.Toast;

public class FragmentActivity extends AppCompatActivity implements View.OnClickListener{    FirstFragment firstFragment;    SecondFragment secondFragment;    private boolean a=true;     //a的作用就是来判断第二次点击按钮时是否切换fragment    boolean e=false;        //e的作用是用来在第一个fragment点击返回时就执行退出程序操作

@Override    protected void onCreate(Bundle savedInstanceState)  {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_fragment);

FragmentManager manager = getFragmentManager();        FragmentTransaction transaction = manager.beginTransaction();        firstFragment = new FirstFragment();        transaction.add(R.id.show,firstFragment);        transaction.commit();    }

@Override    public void onClick(View view) {        if(view.getId()==R.id.bt_show){            e=true; //将e的值设置为true,使在点击返回键时能够切换fragment            if(a){                FragmentManager manager = getFragmentManager();                FragmentTransaction transaction = manager.beginTransaction();                if (secondFragment == null){                    secondFragment = new SecondFragment();                    transaction.replace(R.id.show,secondFragment);                    transaction.commit();                    a=false;    //设置a为false,使在第二次以后点击按钮能够弹出提示                } else{                    transaction.replace(R.id.show,secondFragment);                    transaction.commit();                    a=false;    //设置a为false,使在第二次以后点击按钮能够弹出提示                }            }else{                Toast.makeText(this,"This is second fragment",Toast.LENGTH_SHORT).show();            }        }    }

@Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if(event.getKeyCode()==KeyEvent.KEYCODE_BACK&&e){            FragmentManager manager = getFragmentManager();            FragmentTransaction transaction = manager.beginTransaction();            a=true;     //设置a为true,以便是点击按钮时能再次切换fragment            e=false;    //设置e为false,使在第一个fragment时能够退出            transaction.replace(R.id.show,firstFragment);            transaction.commit();            return  false;        } else {            finish();        }        return super.onKeyDown(keyCode, event);    }
 
时间: 2024-12-29 13:57:29

Fragment之间的切换的相关文章

Android中fragment之间和Activity的传值、切换

功能介绍:通过一个activity下方的三个按钮,分别是发送消息(sendButton).聊天记录(chatButton).常用语(commonButton).当单击按钮是,来切换上方的fragment,用以显示不同的内容. 所用的知识点:当单击发送消息按钮时: 1.从MainActivity中把EditText中的值传到fragment中. 2.fragment如何动态的显示在MainActivity中. 针对第一个问题:在sendButton单击事件中: private OnClickLis

Android之fragment点击切换和滑动切换结合

学了一小段时间的Android,主要接触的是UI设计,打交道最多莫过于fragment了吧.在Android3.0引入了fragment的概念后,几乎在所以的Android的应用中都可以看见其身影,已经有很多前辈高人都已经详细介绍过fragmrnt,我这里就不多说什么了. 这里本来是想模仿一下微信的切换效果,怎奈水平不足,这里就献丑贴出半成品的代码,希望有大神能指点一下.废话不多说,上代码.先从简单的开始吧,这里是我一共用了3个fragment,这里就只贴出第一个的fragment的布局,别的两

Android - Fragment (三)不同Fragment之间的通信

在Fragment的java文件中,可以使用getActivity()来获得调用它的activity, 然后再找到另一个Fragment,进行通信 getActivity().getFragmentManager().findFragmentById(R.id.fragment_list); 但这样做耦合度太高,不方便后续的修改操作 Fragment与其附着的Activity之间的通信,都应该由Activity来完成 不能是多个Fragment之间直接通信 Fragment与其附着的Activi

用户态与内核态之间的切换

时间:2014.06.08 地点:基地 说明:本文由网上资料整理而成 -------------------------------------------------------------------------------------- 一.用户态与内核态 程序在运行时会消耗操作系统的物理资源,比如在创建新进程时涉及物理内存的分配,从父进程拷贝相关信息,拷贝设置页目录.页表等.这些都涉及很底层的操作,不可随便让程序去做,而是由更高级的程序完成,以达到对资源的集中管理,减少冲突.在Linux

【UIKit】控制器之间的切换2 【Push】

[控制器切换Push][?Code] 1.创建3个xib和控制器 2.在AppDelegate中设置首先启动的页面 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window=[[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds] ]; self.

【UIKit】控制器之间的切换1 【Modal】

[Modal][?Code] 1.首先有2个控制器,并且都拥有视图界面. ? 2.点击登录后,第二个页面会从下方上移,那就得在第一个界面中首先创建另外一个界面.然后转向 首先得加载一个协议,这个就是第二个页面的代理. <LoginViewControllerDelegate> 2).点击登录进行转向 - (IBAction)Login { // 初始化控制器 LoginViewController *login=[[LoginViewController alloc]init]; login.

iOS 视图在不同View之间的切换(对于convertRect:函数的一些理解)

可以通过以下函数完成坐标体系在不同View之间的切换,如下面是完成当前View向ParentView坐标的转换(一个矩阵转换)CGRect parentRect = [currentView convertRect:blankImageView.bounds toView:self.superview]; (self.view 上有viewA 与 viewB 两个视图 btn在viewA上) 绝对rect =[viewA.superView convertRect:btn.frame fromV

用Swift完成不同View Controller之间的切换

之前用objective-c开发时,页面之间的切换很容易.其实用swift没有很大的变化,如果你是用storyboard完成的界面,基本上是同样的方式,只不过在代码部分写成swift风格的就行了. 今天在实验开发一个简单的小程序时,却遇到了一些bug,后来还是求助stackoverflow上的大神解决了问题,在此做下记录. 我的程序结构是这样的,在一个页面A中有个按钮,然后点击按钮以后,切换到另一个页面B.A和B都在同一个storyboard中. 这里先说下通用的方法: 手动用代码建好的view

搭建Activity与Fragment,Fragment与Fragment之间的通信架构

内心独白:  曾几何时但凡听到架构之两个字,总能联想到老子说的一句话:"玄之又玄,众妙之门".说不清,道不明.就像是看不见,摸不着,但又真实存在的东西给我们的那种感觉. 回顾人类的历史,繁重的劳动让我们意识到工具的必要性和重要性,并学会了去发明和使用工具.当我进行了大量的,甚至是繁重的编程之后,也开始重新意识到架构的必要性和重要性.当然软件工程发展了这么多年,构架与模式之类的东西前辈们早就说过并且践行与呼吁过,并且也留下了很多值得我们学习和研究的构架模式.但于我个人而言,在没有经历过痛