Fragment基础----信息传递
如何通过activity来访问fragment的信息呢,我们可以通过一个实例来了解。
使用两个Fragment和一个activity管理
效果图:

第一个fragment来表示输入框
第二个fragment表示listview内容
最终由activity来控制两个fragment。
实现方法:
fragment与其附着的activity之间的通讯最佳方式:
1, 在发起事件的fragment中定义一个接口,借口中声明你的方法
2,在onattach中要求activity实现该接口
3,在activity实现方法
具体代码:
step 1:创建Framlayou并与相应的Fragment创建联系
<FrameLayout
android:id="@+id/fragment_edit_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
step 2 :监听封装了EditText的Fragment的回车事件,并使用最佳通讯方式将信息传给Activity
public class FragmentEditText extends Fragment {
private View view;
private OnEnterClickedListener mListener;
private String message;
private EditText editText;
public interface OnEnterClickedListener {
public void onEnterClicked(String message);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (OnEnterClickedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnArticleSelectedListener");
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_edit_text, container,false);
editText = (EditText) view.findViewById(R.id.fragment_et);
editText.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
System.out.println("Action_down");
if (keyCode == KeyEvent.KEYCODE_ENTER) {
message = editText.getText().toString();
mListener.onEnterClicked(message);
System.out.println(message + "messagesdfsd");
editText.setText("");
return true;
}
}
return false;
}
});
return view;
}
step 3 :在activity中实现方法,其中内容的Fragment继承ListFragment可以不覆写任何方法,直接使用,具体参见AndroidDoc
public class MainActivity extends Activity implements OnEnterClickedListener {
private List<String> data;
private ArrayAdapter<String> adapter;
private FragmentContainer fragmentContainer;
private FragmentManager fragmentManager;
private FragmentTransaction beginTransaction;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
data = new ArrayList<String>();
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, data);
fragmentManager = getFragmentManager();
beginTransaction = fragmentManager.beginTransaction();
fragmentContainer = new FragmentContainer();
fragmentContainer.setListAdapter(adapter);
beginTransaction.add(R.id.fragment_container, fragmentContainer);
beginTransaction.add(R.id.fragment_edit_text, new FragmentEditText());
beginTransaction.commit();
}
public void onEnterClicked(String message) {
data.add(message);
adapter.notifyDataSetChanged();
}
}
主要知识点就是利用接口的方式让activity操作Fragment的数据。
Fragment基础----信息传递的更多相关文章
- 核心基础以及Fragment与Activity传递数据完整示例
MainActivity如下: package cc.testsimplefragment0; import android.os.Bundle; import android.app.Activit ...
- 如何在Azure环境里做好信息传递可扩展性经验分享
作者 王枫 发布于2014年5月15日 综述 本文介绍建立一个在Azure上使用Azure服务总线, 高吞吐量短信平台的必要步骤.在这篇文章中提出的解决方案是在响应由客户的具体要求,建立一个基于Win ...
- Fragment与Activity传递数据
MainActivity如下: package cc.testsimplefragment0; import android.os.Bundle; import android.app.Activit ...
- tg2015 信息传递 (洛谷p2661)
题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...
- [NOIP2015]信息传递
[NOIP2015]信息传递[问题描述]有
- [NOIP2015] 提高组 洛谷P2661 信息传递
题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...
- 使用postMesssage()实现跨域iframe页面间的信息传递----转载
由于web同源策略的限制,当页面使用跨域iframe链接时,主页面与子页面是无法交互的,这对页面间的信息传递造成了不小的麻烦,经过一系列的尝试,最后我发现有以下方法可以实现: 1. 子页面url传参 ...
- 洛谷 P2661 信息传递 Label:并查集||强联通分量
题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...
- NOIP 2015 信息传递
kawayi 题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的 ...
随机推荐
- bootstarp3 支持ie8
http://blog.csdn.net/hyb3280660/article/details/51850832 想要bootstarp3 支持ie8? 引入 <!-- 存放全局css/js - ...
- WPF整理-跨程序集访问资源
“Sometimes binary resources are defined in one assembly (typically a class library), but areneeded i ...
- 线上应用bug跟踪查找-友盟统计
线上的应用只要用心点点都能发现些bug,连微信,QQ也不列外.但是bug中最严重的算是闪退了,这导致了用户直接不能使用我们的app. 我们公司是特别注重用户反馈和体验的,我们会定期打电话咨询用户的使用 ...
- IT人生知识分享:概率与运气
前言: 最近的人生多了些体验,也读了些许书,感觉还是有些知识是可以分享的. 今天难得周六,特意开电脑了,花几个小时写写,和大伙分享分享点知识. 以下内容,更多的需要读者思考,所以结论不会写太清晰,但一 ...
- WebForms VS. MVC(翻译)
(本文翻译自CodeProject上阿三写的一篇文章,原文地址:http://www.codeproject.com/Articles/528117/WebForms-vs-MVC,讲了有关ASP.A ...
- 《Entity Framework 6 Recipes》中文翻译系列 (19) -----第三章 查询之使用位操作和多属性连接(join)
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 3-16 过滤中使用位操作 问题 你想在查询的过滤条件中使用位操作. 解决方案 假 ...
- 《Spark快速大数据分析》—— 第六章 Spark编程进阶
这章讲述了Spark编程中的高级部分,比如累加器和广播等,以及分区和管道...
- chrome使用技巧(看了定不让你失望)
写在前面 之前有看过刘哇勇写的Chrome 控制台不完全指南,让我觉得瞬间对chrome的了解实在太浅了.对此特意了解了一番(也就是在他的博文上进行了一些总结和了解一些其它chrome使用方面的诀窍) ...
- SSRS1:配置SMTP Server发送mail
为了使用SSRS发送mail,必须为Reporting service配置SMTP Server. 1,在Reporting Service Configuration Manager中配置Email ...
- Entity Framework Code First实体对象变动跟踪
Entity Framework Code First通过DbContext.ChangeTracker对实体对象的变动进行跟踪,实现跟踪的方式有两种:变动跟踪快照和变动跟踪代理. 变动跟踪快照:前面 ...