Fragment與Fragment、Activity通信的四種方式(二)

2.使用接口

接口可以實(shí)現(xiàn)兩個(gè)Fragment之間的通信,也可以實(shí)現(xiàn)FragmentActivity之間的通信,這大概是用的比較多的一種方式,也是個(gè)人比較推薦的一種方式,使用接口來(lái)實(shí)現(xiàn)兩個(gè)Fragment之間通信,要通過(guò)宿主Activity中轉(zhuǎn)一下,如果是Fragment和宿主Activity通信則直接調(diào)用即可。首先在左邊的Fragment中定義一個(gè)接口:

public?interface?showPro?{

public?void?showProByName(String?name);

}

然后定義一個(gè)接口變量:

private?showPro?mCallback;

我們要在宿主Activity中實(shí)現(xiàn)這個(gè)接口,這樣當(dāng)Fragment調(diào)用onAttach方法時(shí)我們就可以實(shí)例化這個(gè)接口了:

@Override

public?void?onAttach(Activity?activity)?{

super.onAttach(activity);

if?(activity?!=?null)?{

mCallback?=?(showPro)?activity;

}

}

當(dāng)mCallback實(shí)例化之后,那么我們?cè)邳c(diǎn)擊列表中的某一項(xiàng)的時(shí)候就可以調(diào)用這里邊的showProByName方法了:

lv.setOnItemClickListener(new?OnItemClickListener()?{

@Override

public?void?onItemClick(AdapterView?parent,?View?view,

int?position,?long?id)?{

TextView?nameTV?=?(TextView)?view;

String?name?=?nameTV.getText().toString();

if?("**".equals(name))?{

mCallback.showProByName(name);

}

}

});

當(dāng)然,這個(gè)方法的具體實(shí)現(xiàn)在宿主Activity中,當(dāng)宿主Activity實(shí)現(xiàn)了showPro接口之后,接著就要實(shí)現(xiàn)它里邊的方法了:

public?class?MainActivity?extends?Activity?implements?showPro?{

private?ContentFragment?cf;

@Override

protected?void?onCreate(Bundle?savedInstanceState)?{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

getActionBar().hide();

cf?=?(ContentFragment)?getFragmentManager().findFragmentById(

R.id.content_fg);

}

@Override

public?void?showProByName(String?name)?{

cf.showPro(name);

}

}

我們?cè)诮涌诘姆椒ㄖ姓{(diào)用右邊Fragment中的showPro方法,并將當(dāng)前人名作為參數(shù)傳入,這個(gè)方法與1中相同,我就不貼代碼了。這個(gè)方法與1中介紹的方法相比,雖然有點(diǎn)麻煩,但是可以有效的解決在一個(gè)Fragment中拿不到另一個(gè)Fragment實(shí)例的問(wèn)題,具體應(yīng)用場(chǎng)景就是ViewPager中的Fragment之間通信。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容