zoukankan      html  css  js  c++  java
  • android 开发 入门_碎片Fragment布局Demo

    实现思路

    1.写一个父类布局,里面写一个按键和一个帧布局(用于给Fragment布局后续替代

    2.写3个子布局,并且在写3个class继承Fragment布局

    3.在MainActivity的class中写替换碎片布局的方法

    (包含:FragmentManger(碎片管理器)、getSupportFragmentManager(得到支持碎片管理器)、FragmenTransaction(碎片交换器)、beginTransaction(开始碎片交换)、replace(替换)、commit(交付))

    写一个父类布局,里面写一个按键和一个帧布局

    <?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"
        >
       <Button
           android:id="@+id/Button1"
           android:layout_width="match_parent"
           android:layout_height="0dp"
           android:layout_weight="1"
           android:text="改变下面的碎片"/>
        <FrameLayout
            android:id="@+id/FrameLayout1"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="8">
        </FrameLayout>
    
    
    </LinearLayout>

    写3个子布局,并且在写3个class继承Fragment布局

    <?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:padding="10dp">
        <ImageView
            android:id="@+id/fragment_1_ImageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:src="@drawable/ace"/>
        <TextView
            android:id="@+id/fragment_1_TextView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="@string/ace"
            android:textColor="@color/colorBlack"
            android:layout_marginTop="20dp"/>
    </LinearLayout>

    相同布局在写2个

    写一个class继承fragment实现碎片布局实例化

    package com.example.lenovo.myfragmentdemo2.fragment;
    // 注意Fragment的依赖库建议统一使用support-v4库中的
    import android.support.v4.app.Fragment;
    import android.os.Bundle;
    import android.support.annotation.Nullable;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import com.example.lenovo.myfragmentdemo2.R;
    
    /**
     * Created by lenovo on 2018/5/7.
     */
    
    public class Fragment1 extends Fragment {
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment_1,container,false);
            return view;
        }
    }

    在MainActivity的class中写替换碎片布局的方法

    package com.example.lenovo.myfragmentdemo2;
    // 注意Fragment的依赖库
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentTransaction;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    
    import com.example.lenovo.myfragmentdemo2.fragment.Fragment1;
    import com.example.lenovo.myfragmentdemo2.fragment.Fragment2;
    import com.example.lenovo.myfragmentdemo2.fragment.Fragment3;
    
    public class MainActivity extends AppCompatActivity {
        private Button button;
        private int i = 1;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            button = (Button)findViewById(R.id.Button1);
    
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    switch (i){
                        case 1:
                            replaceFragment(new Fragment1());
                            i++;
                            break;
                        case 2:
                            replaceFragment(new Fragment2());
                            i++;
                            break;
                        case 3:
                            replaceFragment(new Fragment3());
                            i++;
                            break;
                        default:
                            replaceFragment(new Fragment1());
                            i=1;
                            break;
                    }
    
                }
            });
        }
    
        public void  replaceFragment(Fragment fragment){
            FragmentManager fragmentManager = getSupportFragmentManager();
            FragmentTransaction transaction = fragmentManager.beginTransaction();//注意!每次要执行commit()方法的时候都需要重新获取一次FragmentTransaction,否则用已经commit过的FragmentTransaction再次commit会报错!
            transaction.replace(R.id.FrameLayout1,fragment);
            transaction.commit();
    
        }
    }

    运行效果:

    点击后:

  • 相关阅读:
    maxContainerCapability 设置不足
    parquet code demo
    Windows下pip安装包报错:Microsoft Visual C++ 9.0 is required Unable to find vcvarsall.bat
    jvm 调优 工具
    hive premanent udf 发布...
    centos6.5 升级python 到 python 2.7.11 安装 pip
    mapreduce 关于小文件导致任务缓慢的问题
    数据可视化开源系统(python开发)
    vs 中 vim vax 快捷键
    ViEmu for VS2013-3.2.1 破解(转)
  • 原文地址:https://www.cnblogs.com/guanxinjing/p/9708626.html
Copyright © 2011-2022 走看看