1. 程式人生 > >Android:ViewPager中獲取當前介面的Fragment

Android:ViewPager中獲取當前介面的Fragment

在專案中,有時會用到在ViewPager中顯示同樣型別的Fragment,同時這樣的Fragment的個數是動態的,但是PagerAdapter沒有給我們提供getCurrentFragment類似的方法。

通過查閱資料和看原始碼,PagerAdapter中有個setPrimaryItem(ViewGroup container, int position, Object object) 方法,我們在這裡面將就可以獲得當前的Fragment,我們將其記錄下來,然後在自己的PagerAdapter中寫個getCurrentFragment() 方法,就可以在外部獲取當前介面的Fragment。

public class XXXPagerAdapter extends FragmentStatePagerAdapter {

    private XXXFragment mCurrentFragment;
    private List<XXX> mList;

    public XXXPagerAdapter(FragmentManager fm, List<XXX> list) {
        super(fm);
        mList = list;
    }

    @Override
    public Fragment getItem(int position) {
        return XXXFragment.newInstance(mList.get(position));
    }

    @Override
    public int getCount() {
        return mList == null ? 0 : mList.size();
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        XXXFragment fragment = (XXXFragment) super.instantiateItem(container, position);
        return fragment;
    }
    
    //----------------------下面才是重點-----------------

    @Override
    public void setPrimaryItem(ViewGroup container, int position, Object object) {
        mCurrentFragment = (XXXFragment) object;
        super.setPrimaryItem(container, position, object);
    }


    public XXXFragment getCurrentFragment() {
        return mCurrentFragment;
    }
}

這裡的FragmentStatePagerAdapter是繼承與PagerAdapter的。

在Activity 中只需這樣呼叫:

mPagerAdapter.getCurrentFragment();


參考:http://www.cnblogs.com/englefly/p/4222953.html

相關推薦

AndroidViewPager獲取當前介面的Fragment

在專案中,有時會用到在ViewPager中顯示同樣型別的Fragment,同時這樣的Fragment的個數是動態的,但是PagerAdapter沒有給我們提供getCurrentFragment類似的方法。 通過查閱資料和看原始碼,PagerAdapter中有個setPri

VB.NET獲取當前介面的解析度

目前總結了一下三種方法: 方法一: 分別獲取,當前的螢幕的寬度和高度; Dim aa As Integer = SystemInformation.PrimaryMonitorSize.Width Dim bb As In

android ViewPager獲取Fragment

值得記錄一下這個問題。 如果用adapter.getItem來獲取,是說不清楚的。我放在選單中執行的時候,竟然可以。放在其他位置的按鈕來獲取,就是重新new出來的。 網上查了下,正確方法如下: ViewPager pager = (ViewPager)findViewBy

AndroidViewPager 使用 Fragment 的懶載入

ViewPager+Fragment的搭配在日常開發中也比較常見,可用於切換展示不同類別的頁面,我們日常所見的諮詢、購物、金融、社交等型別的APP都有機會用到這種控制元件組合. 如: ViewPager控制元件有個特有的預載入機制,即預設情況下當前頁面左右兩側的1個頁

Android獲取當前正在顯示的Activity

1.監聽Activity的生命週期在Application的onCreate方法中監聽Activity的生命週期 registerActivityLifecycleCallbacks(new Activ

在python獲取當前日期字串(格式X年X月X日)

編碼環境:   gvim 7.4 執行環境:   win7-32(en)powershell   python 2.7.11 程式碼: # -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaulte

Android獲取當前位置的使用步驟

在Android中得到當前位置的步驟 1.在AndroidManifest.xml中宣告許可權 android.permission.ACCESS_FINE_LOCATION(或者android.permission.ACCESS_COARSE_LOCAT

AndroidScrollView巢狀ViewPager和ListView示例

引言: 我們在實際開發一個款Android App時,經常會遇到Scrollview和ViewPager和ListView同時使用的場景,如下圖所示的需求: 下面我們通過程式碼來模擬一下這種場景: 佈局檔案: <?xml version="

ViewPager獲取Fragment

用Fragment來填充ViewPager是,Fragment都是通過建立物件來新增到ViewPager中的, mFirstFrag = new FirstFragment(Mai

android測試開發過程獲取當前頁面佈局

平時大家可能會採用android sdk中uiautomatorviewer取dump出來或者通過appium inspector來抓頁面佈局獲取控制元件,不過有時候會因為動態頁面或者其他原因dump失敗。我們通過命令列的方式adb shell uiautomator dum

Android獲取當前螢幕的尺寸大小

<supports-screens android:smallScreens="true" android:normalScreens="t

Android圖片疊加文字,支持拖動改變位置

ear nal format wrap trace ast 分享 gravity ica 之所以做了這麽一個Demo,是由於近期項目中有一個奇葩的需求:用戶拍攝照片後,分享到微信的同一時候加入備註,想獲取用戶在微信的彈出框輸入的內容。保存在自己的server上。而其實,

PHP獲取當前頁面的完整URL

str 獲取 頂級 參數 location pre referer top ati javascript實現: top.location.href 頂級窗口的地址 this.location.href 當前窗口的地址 PHP實現: #測試網址: h

JAVA獲取當前系統時間

arch tac 獲取 -m simple 得到 轉化 sel stack 一. 獲取當前系統時間和日期並格式化輸出: import java.util.Date;import java.text.SimpleDateFormat; public class NowStri

MVC 在視圖獲取當前的Controller、Action的方式

style 視圖 out action pan size 獲取 cti span 在視圖中獲取Controller和Action的方式: Controller: @ViewContext.RouteData.Route.GetRouteData(this.Context)

MVC 在action方法獲取當前action的控制器名和action名

ted col 控制 name pre value values class context 如何在某個action方法中獲取它所在的控制器和action名稱呢。 string controllerName = Request.RequestContext.RouteDa

jquery獲取當前選中行數據的方法

需要 fin blog var java 選中行 javascrip 獲取 行數 $("table tr").click(function() { var td = $(this).find("td");// 找到td元素 var lo_id = td[1].in

在JavaScript獲取當前頁面的滾動位置

scrollTop要獲取當前頁面的滾動條縱坐標位置,用: document.documentElement.scrollTop; 而不是: document.body.scrollTop; documentElement 對應的是 html 標簽,而 body 對應的是 body 標簽。 documentEl

shell腳本獲取當前所在目錄地址

code 地址 color 腳本 AS pan 當前 clas 所在 shell腳本中獲取當前所在目錄如下 #!/bin/bash work_path=$(dirname $0) cd ${work_path} work_path=$(pwd) cd

JavaWebController獲取Form表單提交的資料的方式

Controller中獲取Form表單提交的資料的方式 新增HttpServletRequst型別入參,通過HttpServletRequst.getParameter()獲取請求資料 @RequestMapping(value="/user/save", meth