- 复用
使用
创建继承Fragment的类
重写onCreateView方法
绑定xml
View view = inflater.inflate(R.layout.fragment_title,null);return view;
静态使用
在xml中使用
<fragment android:id="@+id/main_fragment" android:layout_width="match_parent" android:layout_height="wrap_content" android:name="wang.ismy.fragment.TitleFragment" />
动态使用
老版本
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { FragmentManager manager = getFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.add(R.id.title_layout,new TitleFragment()); transaction.commit(); } });
新版本
getSupportFragmentManager() .beginTransaction() .add(R.id.title_layout,new TitleFragment()) .commit();
V4包
动态切换
Random random = new Random(); if (random.nextBoolean()){ getSupportFragmentManager() .beginTransaction() .replace(R.id.title_layout,new TitleFragment()) .commit(); }else{ getSupportFragmentManager() .beginTransaction() .replace(R.id.title_layout,new ContentFragment()) .commit(); }
生命周期
通信
Activity 向 Fragment传值
// Activity 端TitleFragment titleFragment = new TitleFragment(); Bundle bundle = new Bundle(); bundle.putString("id", UUID.randomUUID().toString()); titleFragment.setArguments(bundle); getSupportFragmentManager() .beginTransaction() .replace(R.id.title_layout,titleFragment) .commit();
// Fragment端if (getArguments() != null){ textView.setText(getArguments().getString("id")); }
Fragment 向 Activity 传值
- 回调接口
linearLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (listener != null){ listener.onClick(); } } });/////////////// public interface TitleFragmentClickListener{ void onClick(); } public void setListener(TitleFragmentClickListener listener) { this.listener = listener; }
titleFragment.setListener(new TitleFragment.TitleFragmentClickListener() { @Override public void onClick() { Toast.makeText(getApplicationContext(),"click 111",Toast.LENGTH_SHORT).show(); } });
Fragment 向 Fragment 传值
getFragmentManager().findFragmentById()