Android:Activity+Fragment及它們之間的資料交換
簡介:
為什麼要用Fragment?使用Fragment可以在一個Activity中實現不同的介面。Fragment與Fragment之間的動畫切換,遠比Activity與Activity之間的動畫切換變化方式多。很多時候,我們通過使用一個Activity,切換多個Fragment。本次部落格,主要列舉一下Fragment與它的Activity之間進行資料交換的方式。
1.Fragment中通過getActivity()然後進行強制轉化,呼叫Activity中的公有方法
((XXXXActivity)getActivity()).fun();
2.Activity在切換Fragment的時候,通過setArguments向Fragment傳遞引數,Fragment通過getArguments();獲得從activity中傳遞過來的值
3.Activity實現一個介面,Fragment在onAttach方法中,將該Activity轉化為該介面,在需要呼叫的時候回撥。
注意:本Demo是通過FragmentManager來管理Fragment的,通過FragmentManager管理,我們建立Fragment和銷燬Fragment的時候,可以通過棧的方式:
a.FragmentTransaction的add方法,新增一個Fragment
b.FragmentTransaction的popBackStack()彈出該Fragment
演示例項:
fragment1.xml
-
<
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="#FFFFFFFF"
- android:paddingBottom="@dimen/activity_vertical_margin"
-
android:paddingLeft
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- tools:context="com.example.testfragment.MainActivity$PlaceholderFragment">
- <TextView
- android:id="@+id/tv"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:text="fragment1"/>
- <Button
- android:id="@+id/btn"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@id/tv"
- android:text="跳轉到Fragment2"/>
- </RelativeLayout>
MyFragment1.java
- /*
- * $filename: MyFragment.java,v $
- * $Date: 2014-5-16 $
- * Copyright (C) ZhengHaibo, Inc. All rights reserved.
- * This software is Made by Zhenghaibo.
- */
- package com.example.testfragment;
- import android.app.Activity;
- import android.os.Bundle;
- import android.support.v4.app.Fragment;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.ViewGroup;
- import android.widget.Button;
- /*
- *@author: ZhengHaibo
- *web: http://blog.csdn.net/nuptboyzhb
- *mail: [email protected]
- *2014-5-16 Nanjing,njupt,China
- */
- publicclass MyFragment1 extends Fragment {
- FragmentCallBack fragmentCallBack = null;
- Button btn;
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View rootView = inflater.inflate(R.layout.fragment1, container,
- false);
- btn = (Button)rootView.findViewById(R.id.btn);
- btn.setOnClickListener(new OnClickListener() {
- @Override
- publicvoid onClick(View v) {
- // TODO Auto-generated method stub
- fragmentCallBack.callbackFun1(null);
- }
- });
- return rootView;
- }
- @Override
- publicvoid onAttach(Activity activity) {
- // TODO Auto-generated method stub
- super.onAttach(activity);
- fragmentCallBack = (MainActivity)activity;
- }
- }
fragment2.xml
- <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="#FFFFFFFF"
- android:paddingBottom="@dimen/activity_vertical_margin"
- android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- tools:context="com.example.testfragment.MainActivity$PlaceholderFragment">
- <TextView
- android:id="@+id/tv"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:text="fragment2"/>
- <Button
- android:id="@+id/btn1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@id/tv"
- android:text="直接呼叫Activity"/>
- <Button
- android:id="@+id/btn2"
-
相關推薦
Android:Activity+Fragment及它們之間的資料交換
簡介: 為什麼要用Fragment?使用Fragment可以在一個Activity中實現不同的介面。Fragment與Fragment之間的動畫切換,遠比Activity與Activity之間的動畫切換變化方式多。很多時候,我們通過使用一個Activity,切換
MFC拆分視窗及它們之間的資料交換
CSplitterWnd類 CSplitterWnd類提供一個分隔器視窗的功能,分隔器視窗是一個包含有多個窗格的視窗。窗格通常是應用程式特定的由CView派生的物件,但它也可以是具有適當子視窗ID的
Android Activity/Fragment 生命週期自學整理 還有RecyclerAdapter
Activity/Fragment生命週期圖 轉自 https://www.cnblogs.com/purediy/p/3276545.html Activity oncreate()方法,來初始化子項(控制元件,資料) onpause()方法,釋放記憶體 o
Android Activity/Fragment 生命週期自學整理
Activity/Fragment生命週期圖 Activity oncreate()方法,來初始化子項(控制元件,資料) onpause()方法,釋放記憶體 ondestory() 方法 ,銷燬前呼叫 Fragment oncreateview()
java 介面、抽象類、具體類、內部類、匿名內部類的區別及它們之間的關係
其實java內部類也是一個類,與其他類不同的是內部類是類中類,它的作用範圍只能在這個類中。 java 匿名內部類: 匿名內部類的定義語法如下: new 父類構造器(引數列表)|實現介面() { //匿名內部類的類體部分 } 雖然看上去很簡單,但是還有一
幾種常見的排序演算法及它們之間的比較
1.穩定性比較 插入排序、氣泡排序、二叉樹排序、二路歸併排序及其他線形排序是穩定的 選擇排序、希爾排序、快速排序、堆排序是不穩定的 2.時間複雜性比較 插入排序、氣泡排序、選擇排序的時間複雜性為O(n2) 其它非線形排序的時間複雜性為O(nlog2n) 線形排序的
dm81xx link記憶體分配及link之間資料傳遞
======================================== 轉載:http://www.aiuxian.com/article/p-2695138.html ======================================
List、Set、Map集合最常用六個子類及它們之間的區別詳解(含經典面試題)
集合: 在程式設計中,我們需要管理很多物件集,比如某班全部的同學資訊,某個公司的人員資料等等。JAVA集合就是提供某種資料結構的支援,即存放物件,並讓這些物件按照某種資料結構存放。 集合與陣列的區別: 1. 陣列存放的元素個數是在定義陣列時固定的。
GTK多視窗的建立及視窗之間資料的互動
在用gtk寫圖形介面時,往往會遇到需要用的構件比較多,一個視窗放不下的情況,此時可以考慮使用多個視窗。 gtk建立視窗很方便,呼叫gtk_window_new()就可以,需要多視窗時順手新建一個即可。很奇怪關於gtk多視窗的資料並不多,也許是因為方法太顯而易見了吧 本文程式
Android activity堆疊及管理例項詳解
本文轉載出處:http://www.jb51.net/article/92208.htm 本示例演示如何通過設定Intent物件的標記,來改變當前任務堆疊中既存的Activity的順序。 1. Intent物件的Activity啟動標記說明:
Kotlin/DSL(Anko),原汁原味Kotlin開發Android---Activity Fragment與AnkoUI分離,強大的複用,更加便捷的開發
/寫在前面翻開自己的CSDN,已經很久很久沒有活動了,最近的關於PDF簽章的部落格還是16年寫的。將近年關,工作內容階段性告一段落,終於有時間寫一下自己的東西。廢話少說,說說Kotlin。kotlin開發者給kotlin的定位---不是用來取代任何一種語言,而是 讓開發者有更
Android activity+fragment+viewpager滑動頁面實現之TabLayout
build.gradle新增依賴 compile('com.android.support:design:25.1.1') { force = true } 新增依賴之後如果有報錯。可參考 MyFragmentAdapter public class My
oracle 同一個資料庫,不同使用者之間資料交換
現有同一oracle下的兩使用者user1和user2,現在想把user1的表tb的結構複製到user2下 一、建立dblink交換資料 create database link createDbLinkNameUser1 connect to user1LinkDa
PC和Android模擬器訪問及模擬器之間tcp/udp通訊
Android系統預設只能通過IP(10.0.2.2)單向訪問PC電腦,而PC電腦不能通過IP來直接訪問Android模擬器系統。要想實現PC電腦和Android模擬器系統以及Android模擬器之間相互通訊必須藉助埠重定向(redir)來實現。 先說說埠重定向所需要的telnet客戶端安裝: windo
Android實現Fragment與Activity之間的資料互動
1概念 1 為什麼 因為Fragment和Activity一樣是具有生命週期,不是一般的bean通過建構函式傳值,會造成異常。 2 參考連結 Activity和Fragment傳遞資料的兩種方式 【Fragment精深系列4】Frag
Android Activity、Fragment之間的資料傳遞和返回
Activity之間通過Intent傳遞資料 Intent intent = new Intent(this, TwoActivity.class); intent.putExtra("key", "value");
Android中Activity與Fragment之間資料相互傳遞
一、Activity啟動Activity Intent intent = new Intent(this,MainListActivity.class); startActivity(intent); Activity與Activity傳遞資料 I
關於Android Activity之間傳遞資料的6種方式
使用Inten的putExtra傳遞 第一個Activity中 ? 1 2 3 4 5 6 //建立意圖物件 Intent intent = new Intent(this,TwoActivity.class); //設定傳
Android進階2之Activity之間資料交流(onActivityResult的用法)
主要功能:在一個主介面(主Activity)上能連線往許多不同子功能模組(子Activity上去),當子模組的事情做完之後就回到主介面,或許還同時返回一些子模組完成的資料交給主Activity處理。這樣的資料交流就要用到回撥函式onActivityResult。<1>
android Activity之間資料傳遞 Parcelable和Serializable介面的使用
Activity之間傳資料時,為了避免麻煩,往往會將一些值封裝成物件,然後將整個物件傳遞過去。傳物件的時候有兩種情況,一種是實現Parcelable介面,一種是實現Serializable介面。 0、解釋兩種介面: 1)實現Serializable介面是JavaSE本身就支