日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

Android Studio 单刷《第一行代码》系列 05 —— Fragment 基础

發(fā)布時(shí)間:2025/3/21 Android 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android Studio 单刷《第一行代码》系列 05 —— Fragment 基础 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前情提要(Previously)

本系列將使用 Android Studio 將《第一行代碼》(書(shū)中講解案例使用Eclipse)刷一遍,旨在為想入坑 Android 開(kāi)發(fā),并選擇 Android Studio 作為開(kāi)發(fā) IDE 的同學(xué)開(kāi)路。
PS:其實(shí)我就是現(xiàn)學(xué)現(xiàn)賣(mài),希望我能堅(jiān)持刷完。

在前面已經(jīng)學(xué)習(xí)了 Android 四大組件中的 Activity,這次來(lái)學(xué)習(xí)一下Activity 中的 Fragment。

系列目錄在此:

  • Android Studio 單刷《第一行代碼》系列目錄

摘要(Abstract)

Fragment 的簡(jiǎn)介、簡(jiǎn)單使用、動(dòng)態(tài)加載。

Fragment 是什么

先來(lái)看看?API Guides?里是怎么說(shuō)的。

  • A Fragment represents a behavior or a portion of user interface in an Activity. You can combine multiple fragments in a single activity to build a multi-pane UI and reuse a fragment in multiple activities. You can think of a fragment as a modular section of an activity, which has its own lifecycle, receives its own input events, and which you can add or remove while the activity is running (sort of like a "sub activity" that you can reuse in different activities).
    A fragment must always be embedded in an activity and the fragment's lifecycle is directly affected by the host activity's lifecycle.
  • ?
  • Fragment 必須嵌入在 Activity 中使用。
  • Fragment 的生命周期 是受 Activity 影響的。
  • 可以在一個(gè) Activity 中使用多個(gè) Fragment。
  • Fragment 可以在多個(gè) Activity 中重用。

說(shuō)了這么多,也沒(méi)說(shuō) Fragment 到底是什么,只好繼續(xù)往下看。

Design Philosophy(設(shè)計(jì)理念)

Android introduced fragments in Android 3.0 (API level 11), primarily to support more dynamic and flexible UI designs on large screens, such as tablets. Because a tablet's screen is much larger than that of a handset, there's more room to combine and interchange UI components. Fragments allow such designs without the need for you to manage complex changes to the view hierarchy. By dividing the layout of an activity into fragments, you become able to modify the activity's appearance at runtime and preserve those changes in a back stack that's managed by the activity.

  • Android3.0 里出現(xiàn)的。
  • 為了更加合理和充分地利用大屏幕的空間。

其實(shí)就是為了更好的同時(shí)支持手機(jī)和平板(我是這么認(rèn)為的)。看下面這個(gè)來(lái)自 Android API Guides 中的圖就明白了。

Fragment 簡(jiǎn)單使用

練習(xí)開(kāi)始,新建一個(gè) FragmentTest 的項(xiàng)目,在一個(gè) Activity 中添加兩個(gè) Fragment,并列顯示。

  • 新建一個(gè)左側(cè)布局 left_fragment.xml,放一個(gè) Button 在里面,代碼如下:

?

<Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:text="Button" />

?

  • 同樣的新建一個(gè)右側(cè)布局 right_fragment.xml,放一個(gè) TextView 在里面,代碼省略。

  • 新建 LeftFragment 類,繼承自 Fragment,重寫(xiě) onCreateView() 方法,在這個(gè)方法中通過(guò) LayoutInflater 將布局動(dòng)態(tài)加載進(jìn)來(lái),代碼如下:

public class LeftFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View view = inflater.inflate(R.layout.left_fragment,container,false);
return view;
}
}

  • 同樣新建 RightFragment 類,代碼省略。

  • 修改 activity_main.xml,刪掉默認(rèn)的 TextView 添加 Fragment,代碼如下:

<fragmentandroid:id="@+id/left_fragment"android:name="com.addict.fragmenttest.LeftFragment"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"></fragment><fragmentandroid:id="@+id/right_fragment"android:name="com.addict.fragmenttest.RightFragment"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"></fragment>

這樣最簡(jiǎn)單的 Fragment 示例就寫(xiě)好了,運(yùn)行一下程序看看吧。

動(dòng)態(tài)添加 Fragment

  • 新建一個(gè) another_right_fragment.xml,放一個(gè) TextView 在里面,設(shè)定布局的顏色、TextView 的內(nèi)容,代碼如下:

?

<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:text="this is another right fragment."android:textSize="20sp" />

?

  • 同樣新建一個(gè) AnotherRightFragment 類,代碼省略。

  • 修改 activity_main.xml 的代碼,將右側(cè)的 Fragment 放在 FrameLayout 中,代碼如下:

<fragmentandroid:id="@+id/left_fragment"android:name="com.addict.fragmenttest.LeftFragment"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"></fragment><FrameLayoutandroid:id="@+id/right_layout"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"><fragmentandroid:id="@+id/right_fragment"android:name="com.addict.fragmenttest.RightFragment"android:layout_width="match_parent"android:layout_height="match_parent"></fragment> </FrameLayout>
  • 修改 MainActivity 中的代碼,在點(diǎn)擊 Button 是動(dòng)態(tài)添加 Fragment,代碼如下:
@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = (Button) findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {AnotherRightFragment fragment = new AnotherRightFragment();FragmentManager fragmentManager = getFragmentManager();FragmentTransaction transaction = fragmentManager.beginTransaction();transaction.replace(R.id.right_layout, fragment);transaction.commit();}}); }

這樣就完成了,運(yùn)行一下看看吧。小結(jié)一下動(dòng)態(tài)添加 Fragment:

  • 創(chuàng)建待添加的 Fragment 的實(shí)例。
  • 獲取 FragmentManager,通過(guò) getFragmentManager() 方法。
  • 開(kāi)啟事務(wù)。
  • 向容器內(nèi)加入 Fragment,使用 replace() 方法,參數(shù)為需要傳入的容器 id、待添加的 Fragment 實(shí)例。
  • 提交事務(wù)。
  • 利用返回棧管理 Fragment

    運(yùn)行之前的程序,點(diǎn)擊 Button 動(dòng)態(tài)添加 Fragment 后,按下 Back 鍵我們發(fā)現(xiàn)程序直接退出了。那么能不能做到按 Back 鍵回到上一個(gè) Fragment 呢?

    超簡(jiǎn)單,在這句代碼?transaction.commit();?前再加一句代碼?transaction.addToBackStack(null);?就可以了,試試看吧。

    2015-03-21 更正

    按照上面寫(xiě)的加上這句代碼?transaction.addToBackStack(null);?之后,我發(fā)現(xiàn)按下 Back 仍然沒(méi)有返回上一個(gè) Fragment,還是直接退出程序了。Google Baidu 查了好久也沒(méi)弄明白原因。

    寫(xiě)了個(gè)解決辦法,在 MainActivity 中重寫(xiě)了 onPressed() 方法,代碼如下:

    @Override // 按下 Back 按鈕時(shí)觸發(fā) public void onBackPressed(){FragmentManager fragmentManager = getFragmentManager();// 判斷 BackStack 中是否有 FragmentTransactionif(fragmentManager.getBackStackEntryCount() > 0){// FragmentTransaction 出棧,恢復(fù)前一個(gè) FragmentfragmentManager.popBackStack();return;}super.onBackPressed(); }

    其它(Miscellaneous)

    盡管我試圖在本文中盡量完整的進(jìn)行描述,但受限于篇幅和我的個(gè)人水平,本文難免有所遺漏,歡迎在評(píng)論中指出。
    如果您覺(jué)得閱讀本文對(duì)您有幫助,請(qǐng)點(diǎn)一下“推薦”按鈕,您的“推薦”將是我最大的寫(xiě)作動(dòng)力!

    關(guān)于作者(About Me)

    addict
    原文鏈接:http://www.cnblogs.com/DebugLife/p/4355669.html

    總結(jié)

    以上是生活随笔為你收集整理的Android Studio 单刷《第一行代码》系列 05 —— Fragment 基础的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 九色视频自拍 | 少妇高潮一区二区三区四区 | 老妇裸体性激交老太视频 | 欧美1区2区3区4区 | 婷婷免费| 伊人网影院 | 一二三区免费 | 狠狠久久综合 | 每日在线观看av | 午夜视频免费 | 欧美日韩亚洲成人 | 嫩草国产在线 | 欧美熟妇一区二区 | av国产片 | 国产在线视频卡一卡二 | 欧美a图| 国产精品三区在线观看 | 日本少妇一区 | www.色网站| 动漫美女舌吻 | jav中文字幕 | 一个色综合久久 | 日本 片 成人 在线 九色麻豆 | 成人毛片一级 | 国产一区不卡在线观看 | 成人免费高清视频 | 最新国产毛片 | 成人在线观 | 欧美透逼视频 | 色就色综合| 久久av一区二区三区漫画 | 国产无套精品一区二区 | 久久无码人妻丰满熟妇区毛片 | 国产麻豆成人传媒免费观看 | 久久av网| 欧美精品v国产精品v日韩精品 | 中文字幕日韩经典 | 喷潮在线| wwwyoujizz日本 | 老司机成人免费视频 | 亚洲性xxx | www,xxx69 japan| 欧美在线一区二区视频 | 成人av黄色 | 欧美xxxx83d | 2019天天干 | 日韩免费大片 | 精品久久免费观看 | 韩国av免费观看 | 69av网站 | 深夜福利免费视频 | 逼逼av| 奇米狠狠去啦 | 六月丁香啪啪 | 男女污网站| 91丝袜美腿| 天天色综合图片 | 亚洲福利一区 | 久久综合在线 | 久久综合色网 | 97成人资源站 | 国产二页 | 国产精品成人免费一区二区视频 | 国产只有精品 | 色综合久久精品亚洲国产 | 91精品视频在线看 | 欧美 日本 国产 | 免费看欧美一级片 | 视频在线观看一区二区 | 日韩在线视屏 | 午夜影视体验区 | 亚洲美女黄色片 | 日日骚网 | 国产色爽 | 天天干狠狠插 | 草草影院一区二区三区 | 超碰在线观看99 | 手机天堂网 | 欧美网站在线 | 欧美成人片在线观看 | 久久国产一二三 | 欧美 亚洲 另类 偷偷 自拍 | www日韩视频 | 小明天天看 | 午夜啊啊啊 | 欧美日韩成人一区二区 | 日韩欧美视频一区 | av无码精品一区二区三区宅噜噜 | 美女扒开粉嫩尿口 | 久久久www成人免费无遮挡大片 | 日韩欧美亚洲国产精品字幕久久久 | 欧美一级淫片bbb一84 | 日本少妇三级 | 亚洲色鬼 | 亚洲女人在线 | 美女脱光衣服让男人捅 | 日批网址| 欧美黄片一区二区三区 | 欧美日韩在线观看一区 |