13. How to use fragment
1 <fragment
2 android:id="@+id/list"
3 android:name=“com.new.ExampleFragment"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent" />
Inside the activity’s layout
14. Add fragment programmatically
1 FragmentManager fm = getFragmentManager();
2 FragmentTransaction ft = fm.beginTransaction();
3 ExampleFragment fragment = new ExampleFragment();
4 ft.add(R.id.fragment_container, fragment);
5 ft.commit();
1 <FrameLayout
2 android:id="@+id/fragment_container"
3 android:layout_width="wrap_content"
4 android:layout_height=“wrap_content"/>
15. Fragment Transactions
1 FragmentTransaction ft = fm.beginTransaction();
2 ft.add(R.id.fragment_container, fragment);
3 ft.replace(R.id.fragment_container, fragment);
Modify fragment
4 ft.show(fragment)
5 ft.hide(fragment)
6 ft.remove(fragment)
Modify fragment already in activity
Set transition style
7 ft.setTransition(TRANSIT_FRAGMENT_CLOSE)
8 ft.setCustomAnimations(entet,exit)
20. 1 public class ChannelDetailFragment extends Fragment {
2 private OnChannelClickListener mCallback;
3
4 public interface OnChannelClickListener {
5 public void onChannelClick(int channelNumber);
6 }
7 @Override
8 public void onAttach(Activity activity) {
9 super.onAttach(activity);
10 try {
11 mCallback = (OnChannelClickListener) activity;
12 } catch (ClassCastException e) {
13 throw new ClassCastException(activity.toString()
14 + " must implement OnChannelClickListener");
15 }
16 }
17 public boolean onClick(View v) {
18 mCallback.onChannelClick(channelNumber);
19 }
In fragment file
21. In activity file
1 public class Activity extends Activity
2 implements OnChannelClickListener {
3
4 @Override
5 public void onChannelClick(int channelNumber){
6 // do something or open another fragment.
7 }
8 }
23. Fragment view
Use setContentView() to set view?
1 @Override
2 public View onCreateView(LayoutInflater inflater, ViewGroup
3 container, Bundle savedInstanceState) {
4 View root = inflater.inflate(R.layout.fragment_layout,
5 container, false);
6 //init other view
7 return root;
8 }
Use onCreateView callback to set view !
24. Fragment tips
Toast.makeText(getActivity(), "Mission complete",
Toast.LENGTH_LONG);
Get context from activity
Add to BackStack
1 FragmentManager fm = getFragmentManager();
2 FragmentTransaction ft = fm.beginTransaction();
3 ft.replace(R.id.fragment_container, fragment);
4 ft.addToBackStack(null);
26. Use new Fragment() or
Fragment.newInstance()?
1 ChannelFragment fragment = new ChannelFragment();
2 Bundle args = new Bundle();
3 args.putInt(CHANNEL_PAGE_INDEX, index);
4 fragment.setArguments(args);
27. 1 public static ChannelFragment newInstance(int index) {
2 ChannelFragment fragment = new ChannelFragment();
3 Bundle args = new Bundle();
4 args.putInt(CHANNEL_PAGE_INDEX, index);
5 fragment.setArguments(args);
6 return fragment;
7 }
ChannelFragment.newInstance(index);
Use static factory method for better!