Activity傳遞給Fragmetn
1.使用SetArgumets()
方法
該方法一般用于在Activity中復用同一個Fragment黔攒,通過setArguments()來設(shè)置不同的標記黄刚,展示不同的數(shù)據(jù)谓苟。
//舉例
//Activity中
Fragment fm = new Fragment();
Bundle bundle = new Bundle();
bundle.putString("hello", hello);
fm.setArguments(bundle);
//Fragment中
Bundle bundle = getArguments();
//獲取bundle之后,再用bundle獲取對應(yīng)的數(shù)據(jù)
String hello = bundle.getString("hello");
2.使用findFragmentByTag()
方法獲取Fragment织盼,調(diào)用Fragment的方法
//舉例:
//獲取當前頁面的fragment戏锹,這里的Tag是在將Fragment添加到布局的時候設(shè)置的糕篇。
Fragment fragment = (Fragment) getSupportFragmentManager().findFragmentByTag(tag);
//調(diào)用相應(yīng)的方法
fragment.xxx();
Fragmetn傳遞給Activity
1.通過使用接口
//舉例
//Fragment中-----------------------------------------------
//定義接口
public interface MyListener{
public abstract void sendMessage(String message);
}
//定義接口的實例
private MyListener listener;
//在適當位置初始化 listener
listener = (MyListener) getActivity();
//Fragment中對應(yīng)的方法中,通過調(diào)用接口的方法该窗,傳遞數(shù)據(jù)
if(null != listener)
listener.sendMessage("hello");
//Activity中 -----------------------------------------------
Activity直接實現(xiàn)該接口
public class MainActivity extends Activity implements MyListener{
//這里做接收到數(shù)據(jù)的操作
@Override
public void sendMessage(String message){
}
}
補充:當然打肝,也可以在Fragment中設(shè)置一個方法,專門進行Listenr初始化
//定義設(shè)置接口的方法
public void setMyListener( MyListener listener ){
this.listener = listener;
}
Fragmetn傳遞給Fragment
1.調(diào)用 findFragmentById()
方法獲取對應(yīng)Fragment挪捕,調(diào)用Fragment中的方法粗梭。
PS:該方法試用于,F(xiàn)ragment都設(shè)置了id的時候
//舉例
Fragment1 f1 = (Fragment1) getFragmentManager().findFragmentById(R.id.fragment1);
//調(diào)用對應(yīng)的方法
f1.xxx();
2.調(diào)用 findFragmentById()
方法獲取對應(yīng)Fragment级零,再通過Fragment獲取對應(yīng)的View断医,進行操作
//舉例
//獲取Fragment的方法上面講了滞乙,這里不說了
TextView tv1 = (TextView) f1.getView().findViewByid(R.id.tv1);
//進行想應(yīng)的操作
tv1.xxxx;
3.調(diào)用 getactivity()
方法獲取對應(yīng)activity,再通過activity的 findViewById()
獲取對應(yīng)的View鉴嗤,進行操作
PS:說明斩启,屬于Activity中的Fragment,在Activity中是可以獲取到Fragment中的View控件的
//舉例
TextView tv1 = (TextView) getActivity.findViewByid(R.id.tv1);
//進行想應(yīng)的操作
tv1.xxxx;
補充醉锅,試用其他方式
1.使用本地廣播兔簇,進行廣播通知。
2.使用EventBus 或者 RxBus通知硬耍。