Fragment与Activity交互(使用接口)

在Fragment中:

1.

// 定义一个回调接口,该Fragment所在Activity需要实现该接口// 该Fragment将通过该接口与它所在的Activity交互
{   public void onItemSelected(Integer id);}

2.
// 当该Fragment被添加、显示到Activity时,回调该方法
public void onAttach(Activity activity){   super.onAttach(activity);   // 如果Activity没有实现Callbacks接口,抛出异常   if (!(activity instanceof Callbacks))   {      throw new IllegalStateException(            "BookListFragment所在的Activity必须实现Callbacks接口!");   }   // 把该Activity当成Callbacks对象   mCallbacks = (Callbacks)activity;}
3.// 当用户单击某列表项时激发该回调方法@Overridepublic void onListItemClick(ListView listView   , View view, int position, long id){   super.onListItemClick(listView, view, position, id);   // 激发mCallbacks的onItemSelected方法   mCallbacks.onItemSelected(position);

}

在Activity中:

1.实现接口
public class MainActivity extends Activity implements        BookListFragment.Callbacks

2.覆写接口中定义的方法
// 实现Callbacks接口必须实现的方法    @Override    public void onItemSelected(Integer id)    {       //....}

当Fragment中的相应事件被触发,会在Fragment中通过mCallbacks引用调用Activity中的方法.
时间: 2024-10-23 00:32:07

Fragment与Activity交互(使用接口)的相关文章

深入分析:Fragment与Activity交互的几种方式(三,使用接口)

第一步:我们需要在Fragment中定一个接口,并确保我们的容器Activity实现了此接口: public interface onTestListener { public void onTest(String str); } @Override public void onAttach(Activity activity) { super.onAttach(activity); // 这个方法是用来确认当前的Activity容器是否已经继承了该接口,如果没有将抛出异常 try { mCal

深入分析:Fragment与Activity交互的几种方式(一,使用Handler)

这里我不再详细介绍那写比较常规的方式,例如静态变量,静态方法,持久化,application全局变量,收发广播等等. 首先我们来介绍使用Handler来实现Fragment与Activity 的交互. 第一步,我们需要在Activity中定义一个方法用来设置Handler对象. public void setHandler(Handler handler) { mHandler = handler; } 第二步,在Fragment中的回调函数onAttach()中得到Fragment所在Acti

android Fragment与Activity交互,互相发数据(附图具体解释)

笔者最近看官方training.发现了非常多实用又好玩的知识. 当中.fragment与Activity通信就是一个. fragment与Activity通信主要是两点: 1.fragment传递信息给Activity 此点是通过在fragment中定义接口与Activity共享数据. 2.Activity传递信息给fragment 此点主要是通过fragment的getArgument()和setArgument()两个函数传递bundle来传递. 效果:(最后附上源代码) 主要流程: 1.在

Fragment与Activity交互(使用Handler)

1.在Activity中定义一个方法用来设置Handler对象 public void setHandler(Handler handler) {mHandler = handler;} 2.在Fragment中的回调函数onAttach()中得到Fragment所在的Activity,并调用setHandler方法,设置Handler.该Handler在Fragment中定义,用来接收来自Activity的消息 @Overridepublic void onAttach(Activity ac

Fragment与Activity交互

尽管Fragment被实现为一个对象,它独立于Activity并可以在多个Activity中使用,一个给定的fragment实例直接被捆绑在包含它的Activity中. 特别是,fragment可以通过getActivity()函数访问Activity,并且很容易的执行类似于查找activity布局中的视图的任务:  View listView = getActivity().findViewById(R.id.list); 同样的,activity能够调用fragment的函数findFrag

Fragment与Activity交互(使用Bundle)

将需要传输的数据封装在一个Bundle对象里,然后将该Bundle对象通过 fragment.setArguments()放到fragment内. Bundle arguments = new Bundle();arguments.putInt("int", 10);Fragment fragment = new Fragment();fragment.setArguments(arguments);getFragmentManager().beginTransaction() .re

Android实战简易教程-第五十二枪(Fragment和Activity之间通信)

Fragment的使用可以让我们的应用更灵活的适配各种型号的安卓设备,但是对于Fragment和Activity之间的通信,很多朋友应该比较陌生,下面我们就通过一个实例来看一看如何实现. 一.Activity->Fragment传递数据 1.main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.an

Android中Fragment与Activity之间的交互(两种实现方式)

(未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如何创建Fragment混合布局做了详细的分析,今天就来详细说道说道Fragment与宿主Activity之间是如何实现数据交互的. 我们可以这样理解,宿主Activity中的Fragment之间要实现信息交互,就必须通过宿主Activity,Fragment之间是不可能直接实现信息交互的. Fragment与

Android Fragment和Activity的交互介绍

Fragment和Activity的交互 一个Fragment的实例总是和包含它的Activity直接相关. fragment可以通过getActivity() 方法来获得Activity的实例,然后就可以调用一些例如findViewById()之类的方法. 如: View listView = getActivity().findViewById(R.id.list); 但是注意调用getActivity()时,fragment必须和activity关联(attached to an acti