Fragment (二)向Fragment傳遞參數(shù)

  • Fragment中的getActivity()為null的問(wèn)題

  • 向Fragment傳遞參數(shù)

1. 向Fragment傳遞參數(shù)第一步在AFragment中

java 代碼:AFragment.class

public class AFragment extends Fragment {
    private TextView mTvTitle;

    /**
     * 調(diào)用這個(gè)方法陨舱,可以的到一個(gè)已經(jīng)傳好參數(shù)的fragment
     * @param title
     * @return
     */
    public static AFragment newInstance(String title){
        AFragment fragment=new AFragment();
        Bundle bundle=new Bundle();
        bundle.putString("title",title);
        fragment.setArguments(bundle);
        //即使fragment重構(gòu),也會(huì)通過(guò)反射的機(jī)制苛吱,把重新實(shí)例化的fragment設(shè)上參數(shù)title
        return fragment;
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        //相當(dāng)于activity的onCreate里的setcontentView,給它一個(gè)布局文件返回一個(gè)視圖文件
        View view=inflater.inflate(R.layout.fragment_a,container,false);
        return view;
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        //當(dāng)View創(chuàng)建完成后虫啥,這里有一個(gè)回調(diào)方法
        super.onViewCreated(view, savedInstanceState);
        mTvTitle=(TextView)view.findViewById(R.id.tv_title);
        if(getArguments()!=null){
            //獲取參數(shù)
            mTvTitle.setText(getArguments().getString("title"));
        }

    }

    @Override
    public void onAttach(@NonNull Context context) {
        //當(dāng)Fragment與Activity發(fā)生關(guān)聯(lián)時(shí)調(diào)用
        super.onAttach(context);
    }

    @Override
    public void onDetach() {
        //與onAttach相對(duì)應(yīng)镊逝,當(dāng)Fragment與Activity關(guān)聯(lián)被取消時(shí)調(diào)用
        //當(dāng)調(diào)用這個(gè)方法后触创,會(huì)出現(xiàn)getactivity()為空
        super.onDetach();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        //取消異步
    }
}

關(guān)鍵代碼1

1. 設(shè)一個(gè)靜態(tài)的構(gòu)造方法 AFragment newInstance(String title),返回一個(gè)已經(jīng)傳好參數(shù)的fragment
2. 通過(guò)Bundle傳參數(shù)
3. 調(diào)用setArguments()

public static AFragment newInstance(String title){
        AFragment fragment=new AFragment();
        Bundle bundle=new Bundle();
        bundle.putString("title",title);
        fragment.setArguments(bundle);
        //即使fragment重構(gòu)薪丁,也會(huì)通過(guò)反射的機(jī)制,把重新實(shí)例化的fragment設(shè)上參數(shù)title
        return fragment;
    }

關(guān)鍵代碼 2

1. 在id為tv_title的textview控件中獲取參數(shù)灭衷,即等會(huì)會(huì)在這個(gè)控件里顯示傳入的字符串title

  public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        //當(dāng)View創(chuàng)建完成后次慢,這里有一個(gè)回調(diào)方法
        super.onViewCreated(view, savedInstanceState);
        mTvTitle=(TextView)view.findViewById(R.id.tv_title);
        if(getArguments()!=null){
            //獲取參數(shù)
            mTvTitle.setText(getArguments().getString("title"));
        }
    }

java 代碼:ContainerActivity.class

public class ContainerActivity extends AppCompatActivity {
    private  AFragment aFragment;
    private  BFragment bFragment;

    private Button btn_change;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_container);
        btn_change = (Button) findViewById(R.id.btn_change);
        btn_change.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(bFragment == null){
                    bFragment=new BFragment();
                }
                getSupportFragmentManager().beginTransaction().replace(R.id.fl_container,bFragment).commitAllowingStateLoss();
            }
        });
        //R.id.fl_container:裝在fragment的容器
        //aFragment:要加載的fragment
//        aFragment=new AFragment();
        //調(diào)用Fragment的一個(gè)靜態(tài)方法newInstance
        aFragment=AFragment.newInstance("我是參數(shù)");
        //把AFragment添加到Activity中,記得調(diào)用commit
        getSupportFragmentManager().beginTransaction().add(R.id.fl_container,aFragment).commitAllowingStateLoss();
    }

2. 在Fragment中傳遞參數(shù)第二步:在ContainerActivity中調(diào)用AFragment的靜態(tài)方法newInstance(),寫入?yún)?shù)

關(guān)鍵代碼

//傳參數(shù)的時(shí)候:
aFragment=AFragment.newInstance("我是參數(shù)");
//不傳參數(shù)的時(shí)候
 aFragment=new AFragment();

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市翔曲,隨后出現(xiàn)的幾起案子迫像,更是在濱河造成了極大的恐慌,老刑警劉巖瞳遍,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闻妓,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡掠械,警方通過(guò)查閱死者的電腦和手機(jī)由缆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門注祖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人犁功,你說(shuō)我怎么就攤上這事氓轰。” “怎么了浸卦?”我有些...
    開(kāi)封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)案糙。 經(jīng)常有香客問(wèn)我限嫌,道長(zhǎng),這世上最難降的妖魔是什么时捌? 我笑而不...
    開(kāi)封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任怒医,我火速辦了婚禮,結(jié)果婚禮上奢讨,老公的妹妹穿的比我還像新娘稚叹。我一直安慰自己,他們只是感情好拿诸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布扒袖。 她就那樣靜靜地躺著,像睡著了一般亩码。 火紅的嫁衣襯著肌膚如雪季率。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天描沟,我揣著相機(jī)與錄音飒泻,去河邊找鬼。 笑死吏廉,一個(gè)胖子當(dāng)著我的面吹牛泞遗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播席覆,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼史辙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了娜睛?” 一聲冷哼從身側(cè)響起髓霞,我...
    開(kāi)封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎畦戒,沒(méi)想到半個(gè)月后方库,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡障斋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年纵潦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了徐鹤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡邀层,死狀恐怖返敬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情寥院,我是刑警寧澤劲赠,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站秸谢,受9級(jí)特大地震影響凛澎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜估蹄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一塑煎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧臭蚁,春花似錦最铁、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至甥角,卻和暖如春网严,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嗤无。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工震束, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人当犯。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓垢村,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親嚎卫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嘉栓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容