Android fragment与Activity交互

Fragment通常用于在屏幕一部分的显示,比如在新闻应用中,左侧是新闻的类别,点击相应类别右侧的大半部分屏幕会显示相应的新闻;

Fragment的使用方法:
     1、为Fragment写一个布局;
      2、在Activity的布局中声明fragment
      3、创建一个类继承自Fragment,用于显示、处理布局
                   其中,onAttach()方法是当Fragment和Activity建立关联时调用
                                  onCreateView()加载布局时调用
                            onActivityCreate()在Activity创建完毕时调用
                           onDestroyVIew在视图移除时调用
                                    onDetach()在关系解除时调用
    4、Fragment和Activity之间的通信:
              Activity中获取Fragment中的实例:通过getFragmentManage;
              Fragment获取Activity的方法:通过getActivity;


关于Fragment补充:
1、创建Fragment最好使用V4包的,因为V4包兼容性更好;
2、使用Fragment的Activity最好是FragmentActivity,根据网上所说,否则可能会出现异常错误。
3、Fragment有动态加载和静态加载两种,所谓静态加载,就是在Activity的布局中,引入
<fragment>标签,同时设置name属性为Fragment类的引用。动态加载则是通过FragmentManager创建一个事务来加载:
FragmentManager manager =  getSupportFragmentManager();
FragmentTransaction transaction =  manager.beginTransaction();
AdminAddAccountFragment adminCheckGradeFragment =  new  AdminAddAccountFragment();
transaction.replace(R.id. ll_container ,adminCheckGradeFragment).commit();
R.id.ll_container是Activity布局中一个容器,如LenearLayout之类

关于Fragment与Activity通信的补充:
1、Activity向Fragment传递数据:
在动态加载中,给Fragment通过 setArguments方法传入数据,在Fragment中get:
例:
TeacherSelfInfoFragment self =  new  TeacherSelfInfoFragment();
Bundle bundle =  new  Bundle();
bundle.putString( "path" ,picturePath);
self.setArguments(bundle);
FragmentTransaction transaction =   manage .beginTransaction();
transaction.replace(R.id. ll_teacher ,self).commit();
上面是给Fragment传递数据,以下是Fragment接收数据:
Bundle bundle = getArguments();

2、Fragment向Activity传递数据:
通过回调方法:
1)在Fragment中建立一个抽象类:
private  FragmentInteract  interact ;
public interface  FragmentInteract{
     void  process( int  i);
}
2)Activity继承并实现该抽象类:
@Override
public void  process( int  i) {
     if (i ==  1 ){
        showPopueWindow();
    } else if (i ==  2 ){
        Intent intent =  new  Intent(Intent. ACTION_GET_CONTENT );
        intent.setType( "*/*" );
        intent.addCategory(Intent. CATEGORY_OPENABLE );
        startActivityForResult(intent, FILE_CODE );
    }
}
3)在Fragment中通过使用这个抽象类中的抽象方法,便可以与Activity通信
interact.process( 1);




猜你喜欢

转载自blog.csdn.net/qq_35190319/article/details/78882707