Android-Fragment(与Activity 直接传参 / 通信)

本文深入探讨了Fragment的生命周期相关知识,包括Fragment的基本概念、静态与动态加载方式,以及Fragment与Activity之间的通信机制。通过具体示例,详细阐述了如何在Activity中向Fragment传递参数,并利用回调接口实现Fragment到Activity的通信。最后总结了Fragment的基本应用,并提供了配套Demo下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.回顾

 上篇学习了 Fragment的生命周期 相关知识

2.重点

   (1)Fragment基本知识

   (2)Fragment 静态加载

   (3)Fragment 动态加载

   (4)Fragment的生命周期

   (5)Fragment与Activity 之间相互通信(传值)


3. Activity -> Fragment 传参

   3.1 基本思路

      Activity -> Fragment 创建 Bundle ,Fragment 中 setArgsuments(Bundle bundle)

   3.2 实现

  (1)新建MyFragment4 类

             实现 Fragment 类,实现 onCreateView 方法

@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		// layout布局文件 转成view 对象
		/**
		 * resource 布局文件
		 * root 加载layout 的父 ViewGroup
		 * attachToRoot :false 不返回
		 */
		View view=inflater.inflate(R.layout.fragment, container, false);
		TextView textView1=(TextView) view.findViewById(R.id.textView1);
		Bundle bundle=getArguments();
		String name=bundle.getString("name");
		Toast.makeText(getActivity(),"MyFragment4 拿到值了",Toast.LENGTH_SHORT).show();
		
		textView1.setText(name);
		
		
		
		return view;
	}

 (2)在 Acitivty 中 动态加载 和传参

      

                               String str=edit.getText().toString();
				MyFragment4 fragment4=new MyFragment4();
				Bundle bundle=new Bundle();
				bundle.putString("name",str);
				fragment4.setArguments(bundle);
				
				FragmentManager Manager=getFragmentManager();
				FragmentTransaction transaction=Manager.beginTransaction();
				transaction.add(R.id.linear, fragment4);
			    transaction.commit();
			    Toast.makeText(getApplicationContext(),"Fragment3Activity已发送",Toast.LENGTH_SHORT).show();

4. Fragment -> Activity 通信

    使用 Interface 实现回调函数 ,进行传参

    4.1 实现

    (1)在Fragment4 中 中定义回调接口

         

package com.example.fragment;

import com.example.studydemo.R;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;



@SuppressLint("NewApi")
public class MyFragment4 extends Fragment {

	
	//初始化
	private FragmentToActivity fragmentToActivity;
	
	public interface FragmentToActivity{
		public void huidiao(String str);
	}
	
	@Override
	public void onAttach(Activity activity) {
		// 实例话 接口 对象 ,调用传值
		fragmentToActivity=(FragmentToActivity) activity;
		super.onAttach(activity);
	}
	
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		// layout布局文件 转成view 对象
		/**
		 * resource 布局文件
		 * root 加载layout 的父 ViewGroup
		 * attachToRoot :false 不返回
		 */
		View view=inflater.inflate(R.layout.fragment, container, false);
		TextView textView1=(TextView) view.findViewById(R.id.textView1);
		Bundle bundle=getArguments();
		String name=bundle.getString("name");
		Toast.makeText(getActivity(),"MyFragment4 拿到值了",Toast.LENGTH_SHORT).show();
		
		textView1.setText(name);
		//调用接口传参
		fragmentToActivity.huidiao("我是MyFragment4 , 已经拿到值了,哈哈!");
		
		return view;
	}
}

   4.2 Activity 实现接口 

       处理参数,即为回调的值

@Override
	public void huidiao(String str) {
		// 回调函数 取值
		Toast.makeText(getApplicationContext(),"我是 Fragment3 回调函数执行了",Toast.LENGTH_SHORT).show();

		tv_frag3.setText(str);
		
	}

5.总结

  Fragment 的基本知识就完了,后面在使用ViewPager的时候,需要配合Fragment来使用;


6.demo 下载

http://download.youkuaiyun.com/detail/lablenet/9041457



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值