Activity傳遞給Fragmetn
1.使用SetArgumets()方法
該方法一般用于在Activity中復用同一個Fragment,通過setArguments()來設置不同的標記,展示不同的數(shù)據(jù)。
//舉例
//Activity中
Fragment fm = new Fragment();
Bundle bundle = new Bundle();
bundle.putString("hello", hello);
fm.setArguments(bundle);
//Fragment中
Bundle bundle = getArguments();
//獲取bundle之后,再用bundle獲取對應的數(shù)據(jù)
String hello = bundle.getString("hello");
2.使用findFragmentByTag()方法獲取Fragment,調(diào)用Fragment的方法
//舉例:
//獲取當前頁面的fragment,這里的Tag是在將Fragment添加到布局的時候設置的。
Fragment fragment = (Fragment) getSupportFragmentManager().findFragmentByTag(tag);
//調(diào)用相應的方法
fragment.xxx();
Fragmetn傳遞給Activity
1.通過使用接口
//舉例
//Fragment中-----------------------------------------------
//定義接口
public interface MyListener{
public abstract void sendMessage(String message);
}
//定義接口的實例
private MyListener listener;
//在適當位置初始化 listener
listener = (MyListener) getActivity();
//Fragment中對應的方法中,通過調(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中設置一個方法,專門進行Listenr初始化
//定義設置接口的方法
public void setMyListener( MyListener listener ){
this.listener = listener;
}
Fragmetn傳遞給Fragment
1.調(diào)用 findFragmentById()方法獲取對應Fragment,調(diào)用Fragment中的方法。
PS:該方法試用于,F(xiàn)ragment都設置了id的時候
//舉例
Fragment1 f1 = (Fragment1) getFragmentManager().findFragmentById(R.id.fragment1);
//調(diào)用對應的方法
f1.xxx();
2.調(diào)用 findFragmentById()方法獲取對應Fragment,再通過Fragment獲取對應的View,進行操作
//舉例
//獲取Fragment的方法上面講了,這里不說了
TextView tv1 = (TextView) f1.getView().findViewByid(R.id.tv1);
//進行想應的操作
tv1.xxxx;
3.調(diào)用 getactivity()方法獲取對應activity,再通過activity的 findViewById()獲取對應的View,進行操作
PS:說明,屬于Activity中的Fragment,在Activity中是可以獲取到Fragment中的View控件的
//舉例
TextView tv1 = (TextView) getActivity.findViewByid(R.id.tv1);
//進行想應的操作
tv1.xxxx;
補充,試用其他方式
1.使用本地廣播,進行廣播通知。
2.使用EventBus 或者 RxBus通知。