ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android开发(12):Fragment的使用

2022-01-30 22:05:39  阅读:281  来源: 互联网

标签:12 String Fragment bundle fragment Activity msg Android


个人笔记整理

Fragment

Fragment使用

Acitivity静态添加Fragment:

布局中添加控件

<fragment android:name="<Fragment全类名>"
          android:layout_width=""
          android:layout_height=""
          android:id="@+id/fragment_one"
          />

使用全类名直接指定相应fragment,activity就会自动嵌入该fragment

Activity动态添加和管理Fragment:

  1. 布局文件添加<FrameLayout>并设置ID属性

  2. 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)

标签:12,String,Fragment,bundle,fragment,Activity,msg,Android
来源: https://blog.csdn.net/Palmer9/article/details/122454053

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有