Android开发(12):Fragment的使用
2022/1/30 23:08:54
本文主要是介绍Android开发(12):Fragment的使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
个人笔记整理
Fragment
Fragment使用
Acitivity静态添加Fragment:
布局中添加控件
<fragment android:name="<Fragment全类名>" android:layout_width="" android:layout_height="" android:id="@+id/fragment_one" />
使用全类名直接指定相应fragment,activity就会自动嵌入该fragment
Activity动态添加和管理Fragment:
-
布局文件添加
<FrameLayout>
并设置ID属性 -
activity中动态替换Fragment代码
private void replaceFragment(Fragment fragment){ // 得到Fragment管理实例 FragmentManager fragmentManager = getSupportFragmentManager(); // 开启一个事务 FragmentTransaction transaction = fragmentManager.beginTransaction(); // 进行替换Fragment,参数1为控件ID,参数二为fragment实例(new得到) transaction.replace(R.id.framelayout, fragment); // 根据需要;将fragment添加到返回栈,这样back返回的时候将是之前添加的fragment,直到所有fragment都弹出 // transaction.addToBackStack(null); // 提交事务 transaction.commit(); }
Fragment和Activity进行通信
使用bundle通信
Activity给Fragment传递消息
// 新建一个Bundle对象 Bundle bundle = new Bundle(); // 放入相应数据键值对 bundle.putString("message","I'm from Activity"); // new一个fragment实例 MyFragment myFragment = new MyFragment(); // 将参数传递进去 myFragment.setArguments(bundle);
Fragment接收的时候
@Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); // 获取传递的信息 Bundle bundle = this.getArguments(); // 根据键获取传递信息中的某个值 String msg = bundle.getString("message"); Log.d(TAG,"From Acitvity: "+msg); }
使用Java接口进行通信
为Fragment通信新建一个接口
/** * Fragment通信接口 */ public interface IFragmentcallback { /** * 发送消息给Activity 方法 */ void sendMsgToActivity(String msg); /** * 从Activity获取消息 方法 */ String getMsgFromActivity(String msg); }
Acitvity代码
myFragment.setCallback(new IFragmentcallback(){ @Override void sendMsgToActivity(String msg){ Log.d(TAG,"From Fragment: "+msg); } @Override String getMsgFromActivity(String msg){ return "Hi,I'm from Activity."; } })
Fragment代码
private IFragmentcallback callback; public void setCallback(IFragmentcallback callback){ this.callback = callback; }
其他方案
eventBus,LiveData…
Fragment生命周期
1.打开界面
onCreate() -> onCreateView() ->onActivityCreated() ->onStart() ->onResume()
2.按下主屏键
onPause() ->onStop()
3.重新打开界面.
onStart() ->onResume()
4.按后退键
onPause()- >onStop()- >onDestroyView()->onDestroy()- >onDetach()
在fragment栈中被覆盖:onPause()- >onStop()- >onDestroyView()
fragment栈 重新显示:onCreateView() ->onActivityCreated() ->onStart() ->onResume()
ViewPager2与Fragment
AndroidProjectPractice/ViewPagerTest at main · Forgo7ten/AndroidProjectPractice (github.com)
这篇关于Android开发(12):Fragment的使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-18android.permission.read_media_video
- 2024-01-18android_getaddrinfo failed eai_nodata
- 2024-01-18androidmo
- 2024-01-15Android下三种离屏渲染技术
- 2024-01-09Android 蓝牙使用
- 2024-01-06Android对接华为AI - 文本识别
- 2023-11-15代码安全之代码混淆及加固(Android)
- 2023-11-10简述Android语音播报TTS
- 2023-11-06Android WiFi工具类
- 2023-07-22Android开发未来的出路