1. 程式人生 > >超級新手菜鳥的知識點1(有關Fragment,含有誤導)

超級新手菜鳥的知識點1(有關Fragment,含有誤導)

1,什麼是fragment??

英文釋義:碎片; 片段,未完成的部分; (將檔案內容) 分段;

1、Fragment是android3.0引入的心的API,它代表Activity的子模板,所以可以把fragment理解為Activity片段。

2、Fragment必須被“嵌入”Avtivity中使用,因此Fragment也擁有自己的生命週期,不過Fragment的生命週期受Activity所控制,也就是說Activity停止的時候,Activity中所有的Fragment都會被停止。其他狀態也是一樣。

(可以不看)Fragment也擁有自己的生命週期

onAttace(): 當fragment被加入到activity時呼叫

onCreate(): 系統建立fragment的時候回撥他

onCreateView(): 第一次使用的時候 fragment會在這上面畫一個layout出來, 為了可以畫控制元件 要返回一個 佈局的view,也可以返回null。

onActivityCreated(): 當Activity中的onCreate方法執行完後呼叫。

onStart(): 和activity一致,啟動Fragement 啟動時回撥,,此時Fragement可見

onResume(): 和activity一致 在activity中執行是可見的。啟用, Fragement 進入前臺, 可獲取焦點時啟用。

onPause(): 和activity一致 其他的activity獲得焦點,這個仍然可見

onStop(): 和activity一致, fragment不可見的, 可能情況:activity被stopped了OR fragment被移除但被,加入到回退棧中,一個stopped的fragment仍然是活著的如果長時間不用也會被移除

onDestroyView(): Fragment中的佈局被移除時呼叫。表示fragemnt銷燬相關聯的UI佈局, 清除所有跟檢視相關的資源。

onDestroy(): 銷燬fragment物件, 跟activity類似了。

onDetach(): Fragment和Activity解除關聯的時候呼叫。 脫離activity。

2.用fragment解決什麼問題

1、首先使用Fragment時,可以通過使用者互動來執行一些動作,比如增加、移除、替換(add(), remove(), replace()方法,)等。

2、所有這些改變構成一個集合,這個集合被叫做一個transaction。

3、可以呼叫FragmentTransaction中的方法來處理這個transaction,並且可以將transaction存進由activity管理的back stack中,這樣使用者就可以進行fragment變化的回退操作。

3.fragment 的靜態載入方法

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.lenovo.gaoji.MainActivity">

    <TextView
android:layout_width="match_parent"
android:layout_height="100dp"
android:text="Hello World!"
android:textSize="30sp"
android:gravity="center"/>




    <LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
> <fragment
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:id="@+id/f_one"
android:name="com.example.lenovo.gaoji.fragment.fragmentOne">

    </fragment>
        <fragment
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:id="@+id/f_two"
android:name="com.example.lenovo.gaoji.fragment.fragmentTwo">

        </fragment>



    </LinearLayout>

</LinearLayout>
效果圖

3.fragment 的動態載入方法

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.lenovo.gaoji.TianmaoActivity">

    <LinearLayout
android:layout_width="100dp"
android:orientation="vertical"
android:layout_height="match_parent">

        <Button
android:id="@+id/nvzhuang_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="女裝" />
        <Button
android:id="@+id/nanzhuang_btn"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="男裝"
/>
    </LinearLayout>
    <FrameLayout
android:id="@+id/shop_content"
android:layout_width="match_parent"
android:layout_height="match_parent">

    </FrameLayout>
</LinearLayout>

效果圖

4.ViewPager+Fragment實現頁卡切換


這裡是微信介面的三個佈局,contact為聯絡人,friend為朋友圈,news為訊息

package com.example.lenovo.gaoji.adapter;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.PagerAdapter;

import java.util.List;

/**
 * Created by lenovo on 2018/3/6.
 */

public class MyPagerAdapter extends FragmentPagerAdapter{
    private List<Fragment> mFragmentList;

    public MyPagerAdapter(FragmentManager fm, List<Fragment> fragmentList) {
        super(fm);
        this.mFragmentList = fragmentList;
    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size();
    }
}
package com.example.lenovo.gaoji;

import android.app.Fragment;
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.example.lenovo.gaoji.adapter.MyPagerAdapter;
import com.example.lenovo.gaoji.fragment.ContactFragment;
import com.example.lenovo.gaoji.fragment.FriendFragment;
import com.example.lenovo.gaoji.fragment.NewsFragment;

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

public class WeixinActivity extends AppCompatActivity implements View.OnClickListener{
    private Button contactBtn;
    private Button friendBtn;
    private Button newsBtn;
    private ViewPager viewPager;

    private ContactFragment contactFragment;
    private FriendFragment friendFragment;
    private NewsFragment newsFragment;

    private List<Fragment> fragmentList=new ArrayList<>();

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

        bindID();
        contactFragment = new ContactFragment();
        friendFragment = new FriendFragment();
        newsFragment = new NewsFragment();

        fragmentList.add(contactFragment);
        fragmentList.add(friendFragment);
        fragmentList.add(newsFragment);

        MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager(),fragmentList);

        viewPager.setAdapter(adapter);




    }
    private void bindID() {
        contactBtn = findViewById(R.id.contact_btn);
         friendBtn = findViewById(R.id.friend_btn);
         newsBtn = findViewById(R.id.news_btn);
         viewPager = findViewById(R.id.wx_vp);

         contactBtn.setOnClickListener(this);
         friendBtn.setOnClickListener(this);
         newsBtn.setOnClickListener(this);

    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.contact_btn:
                viewPager.setCurrentItem(0);
            break;
            case R.id.friend_btn:
                viewPager.setCurrentItem(1);
                break;
            case R.id.news_btn:
                viewPager.setCurrentItem(2);
                break;
        }

    }
}

其中一個佈局展示

相關推薦

超級新手知識點1有關Fragment含有誤導

1,什麼是fragment??英文釋義:碎片; 片段,未完成的部分; (將檔案內容) 分段;1、Fragment是android3.0引入的心的API,它代表Activity的子模板,所以可以把fragment理解為Activity片段。2、Fragment必須被“嵌入”Av

PADS學習1基礎入門認識PADS

編寫時間:2018.8 版本:PADS9.5 網路資源較為豐富,學習下載都很方便。 教材1:PADS9.5實戰攻略與高速PCB設計 林超文 編著 教材2:我要自學網 PADS9.5視訊教程 講師 王龍 http://www.51zxw.net/list.aspx?cid=628 教材3:逆天

資料結構----查詢1順序查詢折半查詢

#include <stdio.h> #define maxSize 100 #define num 4 int R[maxSize] = { 0 }; int count = 0; /**

吳恩達Deeplearning.ai 知識點梳理course 5week 3

  本週主要講了多種sequence to sequence結構,包括conditional language model,beam searching,bleu,attention,speech recognition,以及trigger word detec

作業系統最全知識點總結找工作考研必備

作為非科班出身的計算機愛好者,拜讀了作業系統書,刷了王道考研作業系統,收益頗豐,現將知識點總結如下,供找工作、考研的小夥伴們拿來作為作業系統複習提綱。 程序 記憶體 檔案 IO Xmind內容:http://pan.baidu.com/s/1i38bvzJ 密碼:b

iOS成長筆記1——第一個iOS應用

前言:陽光小強最近抽時間學習iOS開發,在學習過程中發現了很多有趣的東西也遇到了很多問題,為了在學習過程中能和大家交流,記錄下學習的心得和學習成果,所以就有了這一個系列文章,希望這一系列文章能形成一個系統性的東西,讓和我一樣剛步入iOS開發的朋友少走彎路,用最少的時間獲得最大

Python從到高手1:初識Python

1 Python簡介 1.1 什麼是Python   Python是一種面向物件的解釋型計算機程式設計語言,由荷蘭人吉多·範羅蘇姆(Guido van Rossum)於1989年發明,第一個公開發行版發行於1991年。目前Python的最新發行版是Pyt

成長記十三----- 草草啟程半途終了?

下一步 後臺 十分鐘 一道 一是 算法題 ceo 奮鬥 同時   來北京兩個多月了,也在現在這家遊戲公司上了一個多月的班了,對於目前自己這狀態真的是撞墻的心都有了。我不知道我到底是怎麽了,一念清醒九念操蛋,心裏面清楚的知道自己應該做什麽,不應該做什麽,但是就是怎麽也控制不住

七步從AngularJS到專家7:Routing

們的 cat idt pan post 好的 書簽 廣播電臺 快速 這是"AngularJS – 七步從菜鳥到專家"系列的第七篇。在第一篇,我們展示了如何開始搭建一個AngularaJS應用。在第四、五篇我們討論了Angular內建的directives。上一篇了解了se

調錯——Spring與DWR集成配置文件報錯

microsoft his www data editors bing ces myeclipse java 背景簡單介紹:該項目是市信用辦的一個系統,之前好像是一個石家莊的公司負責的。我屬於是半路接手。拿到源代碼後。依據他們給的簡(shao)單(de)明(ke)了(l

Ubuntu分區方案方案、常用方案和進階方案

變化 格式化 執行 菜鳥 格式 分開 清理 知識庫 重新 菜鳥方案 “/”與swap兩個分區就可以應付絕大多數的應用 常用方案 分為3個區 1. 掛載點/;主分區;安裝系統和軟件;大小為30G;分區格式為ext4; 2. 掛載點/home;邏輯分區;相當於“我的文檔”;大小

j2se學習中的一些零碎知識點1內容有些零散

方法 封裝 對象 變量 繼承 1、java編譯和運行階段發生的事情,如下圖所示:- 編寫的java源文件,通過java編譯器編譯生成以.class結尾的字節碼文件(字節碼並不是二進制),生成的字節碼文件通過類裝載器裝載進java虛擬機中,再通過java虛擬機運行轉化成二進制文件與底層的操

初學redis

ack 沒有 進制 序列化 cnblogs key demo 二進制 循環 如果你的redis可以在myeclipse上運行小demo了,那麽可以繼續學習了 redis Java String 實例 string是redis最基本的類型,一個key對應一個value。 st

Python從到高手3:聲明變量

ble href edi 一個 android 聲明變量 字符串類型 的人 重要 變量(variable)是Python語言中一個非常重要的概念。變量的主要作用就是為Python程序中的某個值起一個名字。類似於“張三”、“李四”、“王二麻子”一樣的人名,便於記憶。 ??在P

Python從到高手2:清空Python控制臺

cls stdout 聲明 交互 打開 成功 html 重新 指向 執行python命令會進入Python控制臺。在Python控制臺中可以用交互的方式執行Python語句。也就是執行一行Python語句,會立刻返回執行結果。 ??當Python控制臺輸入過多的Python

Python從到高手4:導入Python模塊

imp port fun code image 技術分享 pro 出版 麻煩 在Python代碼中導入模塊需要使用import語句,語法結構如下: import module_name ??引用模塊中函數的語法如下: module_name.function_name ??

Python從到高手5:數字

優先級 菜鳥 這一 轉換 介紹 href .com hex 包含 1 基礎知識 ??Python語言與其他編程語言一樣,也支持四則運算(加、減、乘、除),以及圓括號運算符。在Python語言中,數字分為整數和浮點數。整數就是無小數部分的數,浮點數就是有小數部分的數。例如,下

Python從到高手6:獲取用戶輸入、函數與註釋

依次 都是 正弦 .cn 應該 asc pri 控制臺 html 1. 獲取用戶輸入   要編寫一個有實際價值的程序,就需要與用戶交互。當然,與用戶交互有很多方法,例如,GUI(圖形用戶接口)就是一種非常好的與用戶交互的方式,不過我們先不討論GUI的交互

Python從到高手7:字符串

imageview ofo ror 如果 http 其實在 orien python語言 組合 1. 單引號字符串和轉義符   字符串與數字一樣,都是值,可以直接使用,在Python控制臺中直接輸入字符串,如"Hello World”,會按原樣

Python從到高手8:print函數、賦值與代碼塊

images rec 控制臺輸出 error enter sam 運算 賦值 編程語言 1.神奇的print函數 ??print函數相信讀者一定對它不陌生,因為在前面的章節,幾乎每個例子都使用了print函數,這個函數的功能就是在控制臺輸出文本。不過print在輸出文本時還