Android的Fragment
fragment几个重要的方法解释
- onAttach()当片段连接到活动时调用。
- onCreate()被调用来进行片段的初始创建。
- onCreateView()一旦 Fragment 应该膨胀视图,Android 就会调用它。
- onViewCreated()在之后调用onCreateView()并确保片段的根视图是non-null. 任何视图设置都应该在这里进行。例如,查看查找、附加侦听器。
- onActivityCreated()当宿主活动完成其onCreate()方法时调用。
- onStart()一旦片段准备好显示在屏幕上,就会被调用。
- onResume()- 分配“昂贵”的资源,例如注册位置、传感器更新等。
- onPause()- 释放“昂贵”的资源。提交任何更改。
- onDestroyView()当片段的视图被销毁时调用,但片段仍然保留在周围。
- onDestroy()当片段不再使用时调用。
- onDetach()当片段不再连接到活动时称为。
![image]()
Fragment的方法常用
public class FilmFragment extends Fragment {
private AppCompatActivity listener;
private List<String> mData;
public static Fragment newInstance(String href) {
FilmFragment fragment = new FilmFragment();
Bundle args = new Bundle();
args.putString("href",href);
fragment.setArguments(args);//传递初始参数
return fragment;
}
/**
* 关联到了Activity
* @param context
*/
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
//下面用处常用于Activity和Fragment之间进行通信(拿到了Activity的实例就可以让Fragment向Activity发送数据)
if (context instanceof AppCompatActivity){
this.listener = (AppCompatActivity) context;
}
}
/**
* 用于进行Fragment某些属性的初始化,此时视图还没有创建好,所以可以初始化数据和适配器
* @param savedInstanceState
*/
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mData = new ArrayList<>();
getArguments().getString("href");
}
/**
* 创建Fragment中的视图
* @param inflater
* @param container
* @param savedInstanceState
* @return
*/
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_file,container,false);
}
/**
* 可以 findViewById
* @param view
* @param savedInstanceState
*/
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
RecyclerView rv = view.findViewById(R.id.rv);
}
/**
* Activity和Fragment脱离关联
*/
@Override
public void onDetach() {
super.onDetach();
listener = null;
}
/**
* Activity创建好了,可以拿到其控件了
* @param savedInstanceState
*/
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
}
在Activity中拿到相应的Fragment
//使用替换时的tag
getSupportFragmentManager().findFragmentByTag("tag");
替换布局(此时上一个Fragment会执行onStop和onDestroy)
getSupportFragmentManager().beginTransaction().replace(R.id.fl_main,fragment,"tag").commit();
替换布局(此时不销毁上一个Fragment)
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
if (fragment.isAdded()){
ft.show(fragment);
}else{
ft.add(fragment,"tag");
}
ft.commit();


浙公网安备 33010602011771号