如何通过activity来访问fragment的信息呢,我们可以通过一个实例来了解。

使用两个Fragment和一个activity管理

效果图:

第一个fragment来表示输入框

第二个fragment表示listview内容

最终由activity来控制两个fragment。

实现方法:

fragment与其附着的activity之间的通讯最佳方式:
1, 在发起事件的fragment中定义一个接口,借口中声明你的方法
2,在onattach中要求activity实现该接口
3,在activity实现方法

具体代码:

step 1:创建Framlayou并与相应的Fragment创建联系

  1. <FrameLayout
  2. android:id="@+id/fragment_edit_text"
  3. android:layout_width="fill_parent"
  4. android:layout_height="wrap_content"
  5. android:text="@string/hello_world" />
  6. <FrameLayout
  7. android:id="@+id/fragment_container"
  8. android:layout_width="fill_parent"
  9. android:layout_height="fill_parent"

step 2 :监听封装了EditText的Fragment的回车事件,并使用最佳通讯方式将信息传给Activity

  1. public class FragmentEditText extends Fragment {
  2. private View view;
  3. private OnEnterClickedListener mListener;
  4. private String message;
  5. private EditText editText;
  6.  
  7. public interface OnEnterClickedListener {
  8. public void onEnterClicked(String message);
  9. }
  10.  
  11. @Override
  12. public void onAttach(Activity activity) {
  13. super.onAttach(activity);
  14. try {
  15. mListener = (OnEnterClickedListener) activity;
  16. } catch (ClassCastException e) {
  17. throw new ClassCastException(activity.toString()
  18. + " must implement OnArticleSelectedListener");
  19. }
  20.  
  21. }
  22.  
  23. @Override
  24. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  25. Bundle savedInstanceState) {
  26. view = inflater.inflate(R.layout.fragment_edit_text, container,false);
  27.  
  28. editText = (EditText) view.findViewById(R.id.fragment_et);
  29. editText.setOnKeyListener(new OnKeyListener() {
  30.  
  31. public boolean onKey(View v, int keyCode, KeyEvent event) {
  32. if (event.getAction() == KeyEvent.ACTION_DOWN) {
  33. System.out.println("Action_down");
  34. if (keyCode == KeyEvent.KEYCODE_ENTER) {
  35. message = editText.getText().toString();
  36. mListener.onEnterClicked(message);
  37. System.out.println(message + "messagesdfsd");
  38. editText.setText("");
  39. return true;
  40. }
  41. }
  42. return false;
  43. }
  44. });
  45. return view;
  46. }

step 3 :在activity中实现方法,其中内容的Fragment继承ListFragment可以不覆写任何方法,直接使用,具体参见AndroidDoc

  

  1. public class MainActivity extends Activity implements OnEnterClickedListener {
  2. private List<String> data;
  3. private ArrayAdapter<String> adapter;
  4. private FragmentContainer fragmentContainer;
  5. private FragmentManager fragmentManager;
  6. private FragmentTransaction beginTransaction;
  7.  
  8. @Override
  9. protected void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.activity_main);
  12.  
  13. data = new ArrayList<String>();
  14.  
  15. adapter = new ArrayAdapter<String>(this,
  16. android.R.layout.simple_list_item_1, data);
  17.  
  18. fragmentManager = getFragmentManager();
  19. beginTransaction = fragmentManager.beginTransaction();
  20.  
  21. fragmentContainer = new FragmentContainer();
  22. fragmentContainer.setListAdapter(adapter);
  23.  
  24. beginTransaction.add(R.id.fragment_container, fragmentContainer);
  25. beginTransaction.add(R.id.fragment_edit_text, new FragmentEditText());
  26.  
  27. beginTransaction.commit();
  28.  
  29. }
  30.  
  31. public void onEnterClicked(String message) {
  32.  
  33. data.add(message);
  34. adapter.notifyDataSetChanged();
  35. }
  36. }

主要知识点就是利用接口的方式让activity操作Fragment的数据。  

Fragment基础----信息传递的更多相关文章

  1. 核心基础以及Fragment与Activity传递数据完整示例

    MainActivity如下: package cc.testsimplefragment0; import android.os.Bundle; import android.app.Activit ...

  2. 如何在Azure环境里做好信息传递可扩展性经验分享

    作者 王枫 发布于2014年5月15日 综述 本文介绍建立一个在Azure上使用Azure服务总线, 高吞吐量短信平台的必要步骤.在这篇文章中提出的解决方案是在响应由客户的具体要求,建立一个基于Win ...

  3. Fragment与Activity传递数据

    MainActivity如下: package cc.testsimplefragment0; import android.os.Bundle; import android.app.Activit ...

  4. tg2015 信息传递 (洛谷p2661)

    题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...

  5. [NOIP2015]信息传递

    [NOIP2015]信息传递[问题描述]有

  6. [NOIP2015] 提高组 洛谷P2661 信息传递

    题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...

  7. 使用postMesssage()实现跨域iframe页面间的信息传递----转载

    由于web同源策略的限制,当页面使用跨域iframe链接时,主页面与子页面是无法交互的,这对页面间的信息传递造成了不小的麻烦,经过一系列的尝试,最后我发现有以下方法可以实现: 1. 子页面url传参 ...

  8. 洛谷 P2661 信息传递 Label:并查集||强联通分量

    题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...

  9. NOIP 2015 信息传递

    kawayi 题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的 ...

随机推荐

  1. 【转】POJ题目分类推荐 (很好很有层次感)

    OJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094)初期: 一. ...

  2. Java环境设置

    win7/win8下JDK环境变量设置方法 首先需要到官网上下载JDK这款软件,本人下载的是jdk-7u40-windows-i586版本,安装完成显示jdk1.7.0_67. 其次选择安装路径.本人 ...

  3. Linux上传下载文件快捷命令

    远程链接Linux(如SecrueCRT),要上传文件很下载文件到Linux服务器,只需要使用sz或者rz命令即可快速下载和上传文件了. 使用方法: 1.首先确保Linux服务器系统中安装了lrzsz ...

  4. SQLSERVER中的ALL、PERCENT、CUBE关键字、ROLLUP关键字和GROUPING函数

    SQLSERVER中的ALL.PERCENT.CUBE关键字.ROLLUP关键字和GROUPING函数 先来创建一个测试表 USE [tempdb] GO )) GO INSERT INTO [#te ...

  5. Servant:基于Web的IIS管理工具

    Servant for IIS是个管理IIS的简单.自动化的Web管理工具.安装Servant的过程很简单,只要双击批处理文件Install Servant Service.bat,然后按照屏幕上的说 ...

  6. DDD实践问题之 - 关于论坛的帖子回复统计信息的更新的思考

    之前,在用ENode开发forum案例时,遇到了关于如何实现论坛帖子的回复的统计信息如何更新的问题.后来找到了自己认为比较合理的解决方案,分享给大家.也希望能和大家交流,擦出更多的火花. 论坛核心领域 ...

  7. 学习Cassandra的开源电子书(中英文版)

    学习Cassandra的开源电子书(中英文版)发布啦:http://teddymaef.github.io/learncassandra/ 之前发布了英文版,现在包含中文版了. 学习Cassandra ...

  8. EF连接PostgreSql

    1.用nuget安装npgsql和EF 注意,Nuget一定要安装Npgsql的2.2.7版本,更高版本nuget在后面安装EF的时候无法自动解析. install-Package Npgsql -V ...

  9. 关于CefSharp的坎坷之路

    项目背景: 公司的XX产品需要升级和以后支持多平台的使用.因为之前项目是由WPF实现的.目前以后想作为Html5来展示页面. 因为涉及到整体更改遇到的问题较多以及其他原因,所以只是内部内容区域先替换为 ...

  10. OGNL相关代码

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...