超級新手菜鳥的知識點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 5,week 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在輸出文本時還