zoukankan      html  css  js  c++  java
  • android之fragment的使用

    android中的fragment与html中的div很类似,下图中通过左边的按键可以控制右边的显示内容。右边的内容就是一个fragment,通过点击按键来控制fragment的实现。

    工程目录


    需要定义三个fragment类,每个类中显示不同的内容,每个fragment对应一个布局文件。将来的fragment会用布局文件来填充,填充好的fragment会被放到framelayout中显示

    布局文件


    在主布局文件定义按钮和帧布局

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">
    
        <LinearLayout
            android:id="@+id/left"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="vertical">
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="f1"
                android:onClick="click1"/>
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="f2"
                android:onClick="click2"/>
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="f3"
                android:onClick="click3"/>
        </LinearLayout>
        <FrameLayout
            android:id="@+id/fragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        </FrameLayout>
    </LinearLayout>

    帧布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#ff0000">
    
    </LinearLayout>

    Fragment1类


    fragment1类需要继承Fragment,这里注意是adroind类库中的fragment,而不是adroind支持类库中fragment类。

    package xidian.dy.com.chujia;
    
    import android.os.Bundle;
    import android.support.annotation.Nullable;
    import android.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    /**
     * Created by dy on 2016/8/25.
     */
    public class Fragment1 extends Fragment{
        
        @Nullable
        @Override
        //加载我们的帧布局文件,将要显示的内容来填充fragment
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            
            View v = inflater.inflate(R.layout.fragment1, null);
            return v;
        }
    }

    Activity


    在Activity中定义帧布局,当点击事件发生的时候切换帧

    package xidian.dy.com.chujia;
    
    import android.app.FragmentManager;
    import android.app.FragmentTransaction;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    
    
    public class MainActivity extends AppCompatActivity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        }
    
        public void click1(View v){
            Fragment1 f1 = new Fragment1();
            FragmentManager fm = getFragmentManager();
            FragmentTransaction ft =  fm.beginTransaction();
            ft.replace(R.id.fragment, f1);
            ft.commit();
        }
    
        public void click2(View v){
            Fragment2 f2 = new Fragment2();
            FragmentManager fm = getFragmentManager();
            FragmentTransaction ft =  fm.beginTransaction();
            ft.replace(R.id.fragment, f2);
            ft.commit();
        }
    
        public void click3(View v){
            Fragment3 f3 = new Fragment3();
            FragmentManager fm = getFragmentManager();
            FragmentTransaction ft =  fm.beginTransaction();
            ft.replace(R.id.fragment, f3);
            ft.commit();
        }
    }

       显示一个fragment的过程和数据库的事务很类似,首先需要通过FragmentManager来开启一个事务,然后通过replace方法来进行绑定。replace的第一参数的framelayout的ID,第二个参数是具体的fragment,最后进行事务的提交。

  • 相关阅读:
    mysql表的完整性约束
    Web服务器Tomcat集群与负载均衡技术
    集群中几种session同步解决方案的比较[转]
    web集群时session同步的3种方法[转]
    WEB 集群与负载均衡(一)基本概念-上
    传输层负载均衡实现原理
    企业级web负载均衡完美架构
    高可用负载均衡最佳实践三: 设计
    网站架构之负载均衡
    使用nginx sticky实现基于cookie的负载均衡
  • 原文地址:https://www.cnblogs.com/xidongyu/p/5808573.html
Copyright © 2011-2022 走看看