首先 定义一个 回调接口
- public interface FragmentCallBack {
- public void callbackFun1(Bundle arg);
- public void callbackFun2(Bundle arg);
- }
让Activity实现了这个接口
- public class MainActivity extends ActionBarActivity implements FragmentCallBack
- {
- private Button btn;
- @Override
- public void callbackFun1(Bundle arg) {
- // TODO Auto-generated method stub
- switchFragment();//通过回调方式切换
- }
- @Override
- public void callbackFun2(Bundle arg) {
- // TODO Auto-generated method stub
- changeButtonColor();//通过回调方式调用Activity中的方法
- }
- }
最后在fragment的onAttach中绑定在点击事件中调用
- @Override
- public void onAttach(Activity activity) {
- // TODO Auto-generated method stub
- super.onAttach(activity);
- fragmentCallBack = (MainActivity)activity;
- }
- btn.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- fragmentCallBack.callbackFun1(null);
- }
- });
同理 activity向fragment传值时只需要将new 出来的fragment上转型为fragment实现的接口类型 在activity中的点击事件中调用回调方法就可以传值了
fragment之间的传值最好是通过activity传值
activity中用getSupportFragmentManager fragment中还有fragment用getChildFragmentManager