1. 程式人生 > >Anctivity與Fragment不得不說的事情(activity中viewpage+fragment後通訊)

Anctivity與Fragment不得不說的事情(activity中viewpage+fragment後通訊)

demo:activity中和fragment1中都有一個按鈕給fragment2傳至,主要的關鍵點是拿到viewpage的adapter,使用
(Fragment2) activity.myViewPageAdapter.getItem(1)獲取例項實現傳至。
1.adapter
package com.example.shibo.testviewpagefragment;

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 android.view.View;

import java.util.List;

/**
 * Created by shibo on 2017/3/21.
 */

public class MyViewPageAdapter extends FragmentPagerAdapter{
    List<Fragment> mList;
    FragmentManager mManger;

    public MyViewPageAdapter(FragmentManager fm, List<Fragment> mList) {
        super(fm);
        this.mList = mList;

    }

    @Override
    public int getCount() {
        if(mList.size()<=0){
            return 0;
        }
        return mList.size();
    }

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


}
2.activity
package com.example.shibo.testviewpagefragment;

import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
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 java.util.ArrayList;
import java.util.List;

public class MainActivity extends FragmentActivity {
  ViewPager viewpage;
    /*
    第一public的adapter,使fragment1也可以拿到
     */
    public MyViewPageAdapter myViewPageAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        viewpage= (ViewPager) findViewById(R.id.viewpage);
        FragmentManager manager=getSupportFragmentManager();
        Fragment1 fragment1=new Fragment1();
        Fragment2 fragment2=new Fragment2();
        List mList=new ArrayList();
        mList.add(fragment1);
        mList.add(fragment2);
        myViewPageAdapter=new MyViewPageAdapter(manager,mList);
        viewpage.setAdapter(myViewPageAdapter);
        /**
         * button 傳至到fragment2
         */
        Button button= (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Fragment2 fragment21= (Fragment2) myViewPageAdapter.getItem(1);
                fragment21.showMessageFromActivity("我是activity傳遞過來的資料");
            }
        });
    }
}


3.fragment1和2
package com.example.shibo.testviewpagefragment;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

/**
 * Created by shibo on 2017/3/21.
 */

public class Fragment1 extends Fragment{
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment1,null);
        Button button= (Button) view.findViewById(R.id.button);
        /*
        拿到adapter實現傳至
         */
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MainActivity activity= (MainActivity) getActivity();
              Fragment2 fragment2= (Fragment2) activity.myViewPageAdapter.getItem(1);
                fragment2.showMessageFromActivity("從fragment1傳遞過來的資料");
            }
        });
        return view;
    }
}
package com.example.shibo.testviewpagefragment;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

/**
 * Created by shibo on 2017/3/21.
 */

public class Fragment2 extends Fragment{
    TextView text;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment2,null);
         text= (TextView) view.findViewById(R.id.text);

        return view;
    }
    public void showMessageFromActivity(String message){
        text.setText(message);
    }
}



相關推薦

AnctivityFragment不得不說的事情activityviewpage+fragment通訊

demo:activity中和fragment1中都有一個按鈕給fragment2傳至,主要的關鍵點是拿到viewpage的adapter,使用 (Fragment2) activity.myView

fragment新增fragmentactivity新增fragment的不同

activity中新增fragment FragmentTransaction transaction=getSupportFragmentManager().beginTransaction();

Activity 跳轉到FragmentMainActivityFragment

Activity 跳轉到Fragment中(備註:MainActivity中的Fragment)     如果大家有遇到這個問題 說明你來對了 樓主我可是踩了無數的坑,花了幾天的時間才把這篇文章寫下      現在App的模式一般都是Activity中多Fragment的模

Adapter,Fragment向所屬的activity傳值

activit .sh use 點擊 rri hold pan col avatar 1、在adapter或fragment中定義接口   如:   public interface LongClickListener {       void getClickNam

線性規劃的單純形法內點法原理、步驟以及matlab實現

應用 最大化 round 並不是 兩個 生產 陰影 3.3 ima 在本系列的第三篇博客中,筆者討論對偶單純形法的相關理論和應用 2.3 Dual Simplex Method(對偶單純形法) Contents   2.3.1 對偶問題產生的原因   2.3.2 對偶問題的

MVC Razorjavascript混編js嵌入razor

razor語法 js代碼 module new ext activit pageutil script 輸出 其中的關鍵是輸出js上的純文本內容,讓瀏覽器解析為其中的js代碼 <script> BUI.use(‘common/main‘,functio

二叉樹建立訪問先序,序,

二叉樹的建立(先序建立) 二叉樹的訪問(遞迴與非遞迴 先序)(遞迴與非遞迴中序)(遞迴與非遞迴 後序) #include<iostream> #include<stack> using namespace std; struct Tree_Node ///結點的

16_資料結構演算法_遍歷樹前序、序、_Python實現

#Created By: Chen Da #定義一個二叉樹的類 class Binary_Tree(object): def __init__(self,root): self.key = root self.left_child = None

資料結構——二叉樹的遞迴非遞迴遍歷先序,序,

實驗專案五 二叉樹基本操作的實現 課程名稱:資料結構 實驗專案名稱:二叉樹基本操作的實現 實驗目的: 1.掌握樹的基本操作—遍歷。 實驗要求: 1、 分別用遞迴和非遞迴的方法實現一棵樹的三種遍歷。 實驗過程: 建立一棵二叉樹(二叉樹如下圖所示);

在一個元件呼叫其他元件的內容||android怎樣在activity獲取fragment的控制元件

//getFragmentManager().findFragmentById(id).getView().findViewById(id); // 此句截自百度知道 詳見google 官方藍芽裡BluetoothChatFragment中setupChat()方法button呼叫EditTex

Java程式設計public classclass的區別Public類和類的區別

共同點: Public class和class都是對類進行宣告,用於定義類 一、Public class: 1 如果使用了該類,則類名必須與檔名一致 2 被public修飾的類可以被其他包訪問 二、Class: Class類可以訪問Public類,但不能被其他包訪問

同一個Activity不同Fragment的資料傳遞

參考文章:http://blog.csdn.net/harvic880925/article/details/44966913 最近在專案中需要實現這樣的一個需求: 同一個Activity中有兩個Fragment,然後有兩Fragment。兩Fragment中又巢狀著不同

javahashcodeequals詳解集合的用法

一:Java中的equals方法和hashCode方法是Object中的,所以每個物件都是有這兩個方法的,有時候我們需要實現特定需求,可能要重寫這兩個方法 equals()和hashCode()方法是用來在同一類中做比較用的,尤其是在容器裡如set存放同一類物件

兩個ActivityFragment之間的引數傳遞

這是我第一次寫部落格,也是在大神的指點下,因為看到大神都說菜鳥就要多寫部落格才可以成長,於是我鼓足勇氣開始了。 自己在網上查了很多: 第一:大致總結網上的有Activity和Activity之間的資料傳遞,通過startActivity()和star

activity向另一個activityfragment傳值

列表內容 在學習和專案運用中會用到activity想另一個activity中的fragment傳值,在網上看了很多前輩的帖子,自己總結寫了個傳值方式。舉個例子,在一個商場的app中,主介面中嵌套了4fragment,中有一個是個人中心,點選個人中心的登入按鈕

activity載入fragment的兩個方式以及獲取fragment的控制元件的方式

public class MainActivity extends Activity { Button show ,show2; FragmentManager fragmentManager; FragmentTransaction fragmentTransac

Activity+Fragment基本框架主要解決重啟,出現重疊的問題

之前寫過,這裡記載一個完整的 MainActivity package com.example.apple.quickdemo.activity; import android.os.Bundle; import android.support

Activityfragment載入webview 出現空白

        在開發中遇到了載入fragment出現空白的問題,剛開始並沒有判斷出是因為裡面webview的原因。具體介面情況是在一個activity中有兩個fragment,然後點選對應的按鈕,切換fragment, fragment中的佈局有webview和其他按鈕。 

__int64 型別VClong long 型gcc,C99標準

int64 是有符號 64 位整數資料型別,也就是 C# 中的 long 和 SQL Server 中的 bigint,範圍為 -2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807),儲

android activity使用fragment ,如果activity崩潰重啟 那麼會導致fragment會被清空掉(是資料清空,但是fragment依然存在)

具體清空如下:  1、 使用add,show,hide方式操作fragment  2、activity崩潰迅速重啟,並且重啟成功  這個時候 可以發現第一個fragment是OK的, 後面的fragment物件不為空,但是裡面的資料沒有了(我沒有用savedInstance