海外仓网站建设中国品牌装修公司排名
- 作者: 五速梦信息网
- 时间: 2026年04月20日 11:00
当前位置: 首页 > news >正文
海外仓网站建设,中国品牌装修公司排名,福州网站建设招聘信息,便宜做网站的公司03 Android基础–fragment什么是fragment#xff1f;fragment生命周期#xff1f;动态的fragment与静态的fragmentfragment常用的两个类与APIFragment与Activity通信什么是fragment#xff1f; 碎片#xff0c;一个activity中可以使用多个fragment#xff0c;可以把activi… 03 Android基础–fragment什么是fragmentfragment生命周期动态的fragment与静态的fragmentfragment常用的两个类与APIFragment与Activity通信什么是fragment 碎片一个activity中可以使用多个fragment可以把activity看成碎片的容器。fragment也有自己的生命周期 fragment生命周期 需要知道的是 创建和重建过程: Activity生命周期优先于Fragment 暂停和销毁过程: Fragment生命周期优先于Activity 动态的fragment与静态的fragment 一个xml写一个用Java代码写。 // 静态的fragment// 第一步编写fragment所需要的XML文件 ?xml version1.0 encodingutf-8? FrameLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.BlankFragment1TextViewandroid:idid/textViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textTextViewandroid:textSize30dp/Buttonandroid:idid/buttonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_marginTop100dpandroid:textButton / /FrameLayout// 第二步编写activity所需要的XML文件把fragment的XML定位到activity所需的XML文件中。 ?xml version1.0 encodingutf-8? LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticaltools:context.MainActivity!– name为确定 这个fragment绑定的哪个id必须设置因为资源管理会使用。一个avtivity可以包含多个fragment–fragmentandroid:idid/fragment1android:namecom.example.fifthdemo_framgent_01.BlankFragment1android:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:layout_weight1//LinearLayout// 第三步编写fragment本身的代码 public class BlankFragment1 extends Fragment {private View root;private TextView textView;private Button button;Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);}Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {if (root null) {root inflater.inflate(R.layout.fragment_blank1, container, false);}textView root.findViewById(R.id.textView);button root.findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {textView.setText(button setOnClickListener);}});return root;} }// 第四步编写activity。这个时候fragment就会被渲染到activity中了。 public class MainActivity extends AppCompatActivity implements View.OnClickListener {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);} } // 动态的fragment一般都用这个// 第一步编写fragment所需要的XML文件 ?xml version1.0 encodingutf-8? FrameLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.BlankFragment1TextViewandroid:idid/textViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textTextViewandroid:textSize30dp/Buttonandroid:idid/buttonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_marginTop100dpandroid:textButton / /FrameLayout// 第二步编写fragment本身的代码 public class BlankFragment1 extends Fragment {private View root;private TextView textView;private Button button;Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);}Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {if (root null) {root inflater.inflate(R.layout.fragment_blank1, container, false);}textView root.findViewById(R.id.textView);button root.findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {textView.setText(button setOnClickListener);}});return root;} }// 第三步编写activity所需要的XML文件 ?xml version1.0 encodingutf-8? LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticaltools:context.MainActivityButtonandroid:idid/bt1android:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:textadd fragment /Buttonandroid:idid/bt2android:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:textrepalce /!– fragment的容器将来动态创建的fragment直接放这里面–FrameLayoutandroid:idid/framelayout_1android:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:background#A68EA3//LinearLayout// 第四步编写activity动态的创建fragment public class MainActivity extends AppCompatActivity implements View.OnClickListener {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button1 findViewById(R.id.bt1);button1.setOnClickListener(this);Button button2 findViewById(R.id.bt2);button2.setOnClickListener(this);}Overridepublic void onClick(View view) { //点击事件switch (view.getId()) {case R.id.bt1: replaceFragment(new BlankFragment1());break;case R.id.bt2: replaceFragment(new ItemFragment2());break;}}private void replaceFragment(Fragment fragment) {//获取Fragment的管理器类 FragmentManagerFragmentManager fragmentManager getSupportFragmentManager();//获取 FragmentManager中用于 Fragment 替换之类的类 FragmentTransactionFragmentTransaction transaction fragmentManager.beginTransaction();//创建一个替换Fragment的事件transaction.replace(R.id.framelayout_1,fragment); // 替换的是framelayout_1中的fragment//将新的Fragment对象压入一个栈内点击back会进行回退而非退出apptransaction.addToBackStack(null);//提交事件transaction.commit();} } 补充FragmentManager支持链式调用 // FragmentManager支持链式调用 FragmentManager fragmentManager getSupportFragmentManager(); fragmentManager.beginTransaction().replace(R.id.fragment_container, ExampleFragment.class, null).setReorderingAllowed(true).addToBackStack(name) // name can be null.commit(); fragment常用的两个类与API 常用的类 FragmentManager 顾名思义是负责管理Fragment的管理类可以对Fragment进行添加、移除、替换等操作。在activity中操作。FragmentTransaction 通过FragmentManager获得保证了fragment操作的原子性。 常用的API FragmentTransaction transaction fm.benginTransatcion();//开启一个事务transaction.add();//让Activity中添加一个Fragmenttransaction.remove();//从Activity移除一个Fragment如果被移除的 Fragment没有添加到回退栈这个Fragment事例将会被销毁。transaction.replace();//使用另一个Fragment替换当前到就相当于remove()以后再add()transaction.hide();//隐藏当前的Fragment。Transaction.show();//显示之前隐藏的Fragmentdetach();//将view从UI中移除和remove()不同此时Fragment的状态依然由FragmentManager维护。attach();重建view视图附加到UI上并显示。transaction.commit();//提交一个事务。 Fragment与Activity通信 有很多种接下来说一些常用的 通过构造器通过ViewModel通过EventBus通过接口回调通过Handler通过广播 接下来介绍两种最常用的 // 通过构造器在activity中。FragmentTransaction fragmentTransaction getSupportFragmentManager().beginTransaction();Fragment fragTop new FrameTop();fragmentTransaction.replace(R.id.frame1,fragTop);Bundle bundle new Bundle();fragTop.setArguments(bundle);bundle.putString(name,fragTop);fragmentTransaction.commit();// 在fragment中获取Overridepublic void onAttach(NonNull Context context) {super.onAttach(context);Bundle arguments getArguments();String name arguments.getString(name);} // 通过viewModel将来这个最常用 // 官方文档代码示例 public class SharedViewModel extends ViewModel {private final MutableLiveDataItem selected new MutableLiveDataItem();public void select(Item item) {selected.setValue(item);}public LiveDataItem getSelected() {return selected;} }public class ListFragment extends Fragment {private SharedViewModel model;public void onViewCreated(NonNull View view, Bundle savedInstanceState) {super.onViewCreated(view, savedInstanceState);model new ViewModelProvider(requireActivity()).get(SharedViewModel.class);itemSelector.setOnClickListener(item - {model.select(item);});} }public class DetailFragment extends Fragment {public void onViewCreated(NonNull View view, Bundle savedInstanceState) {super.onViewCreated(view, savedInstanceState);SharedViewModel model new ViewModelProvider(requireActivity()).get(SharedViewModel.class);model.getSelected().observe(getViewLifecycleOwner(), item - {// Update the UI.});} }
- 上一篇: 海事网站开发娄底市住房和城乡建设局网站
- 下一篇: 海外建站流程政务网站开发协议
相关文章
-
海事网站开发娄底市住房和城乡建设局网站
海事网站开发娄底市住房和城乡建设局网站
- 技术栈
- 2026年04月20日
-
海宁做网站高密微网站建设
海宁做网站高密微网站建设
- 技术栈
- 2026年04月20日
-
海宁住房和城乡规划建设局网站仿牌网站空间
海宁住房和城乡规划建设局网站仿牌网站空间
- 技术栈
- 2026年04月20日
-
海外建站流程政务网站开发协议
海外建站流程政务网站开发协议
- 技术栈
- 2026年04月20日
-
海外贸易网站建立一个小程序多少钱
海外贸易网站建立一个小程序多少钱
- 技术栈
- 2026年04月20日
-
海外培训视频网站建设wordpress 主题origin
海外培训视频网站建设wordpress 主题origin
- 技术栈
- 2026年04月20日
