Fragment

Fragment 有自己的生命周期和回调方法。


image

创建 Fragment 通过扩展 Fragment 类实现,也可以扩展其之类 DialogFragment、ListFragment、PreferenceFragment。

要想为片段提供布局,您必须实现 onCreateView() 回调方法

public static class ExampleFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.example_fragment, container, false);
    }
}

向 Activity 添加片段

在 Activity 的布局文件内声明片段



    
    

android:name 属性指定要在布局中实例化的 Fragment 类。

通过编程方式将片段添加到某个现有 ViewGroup

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

ExampleFragment fragment = new ExampleFragment();
fragmentTransaction.add(R.id.fragment_container, fragment);
fragmentTransaction.commit();

管理片段

通过 FragmentManager fragmentManager = getFragmentManager(); 管理片段。

执行片段事务

以下示例说明了如何将一个片段替换成另一个片段,以及如何在返回栈中保留先前状态:

// Create new fragment and transaction
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();

// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);

// Commit the transaction
transaction.commit();

与 Activity 通信

片段可以通过 getActivity() 访问 Activity 实例

View listView = getActivity().findViewById(R.id.list);

Activity 也可以使用 findFragmentById() 或 findFragmentByTag(),通过从 FragmentManager 获取对 Fragment 的引用来调用片段中的方法

ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);

片段的生命周期

image

你可能感兴趣的:(Fragment)