文档章节

Android 学习之Activity与Fragment之间的信息传递

A
 Angels_安杰
发布于 2015/10/09 12:03
字数 377
阅读 680
收藏 6

需求场景:在fragment中输入数据,通过activity,将数据加载到另外一个fragment中显示出来

流程梳理:

在输入数据的fragment类中定义一个接口,接口参数为所需传递的数据-->activity需实现该接口并在接口方法中处理传递过来的数据--->fragment通过在onAttach方法或者activity对象的引用,进而在获得数据后通过activity对象的应用调用该接口方法

废话补多少,直接上代码


public class NewItemFragment extends Fragment {


  private OnNewItemAddedListener onNewItemAddedListener;

  

  public interface OnNewItemAddedListener {

    public void onNewItemAdded(String newItem);

  }

  

  @Override

  public View onCreateView(LayoutInflater inflater, ViewGroup container,

    Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.new_item_fragment, container, false);

    final EditText myEditText = 

      (EditText)view.findViewById(R.id.myEditText);

myEditText.setOnKeyListener(new View.OnKeyListener() {

      public boolean onKey(View v, int keyCode, KeyEvent event) { 

        if (event.getAction() == KeyEvent.ACTION_DOWN)

          if ((keyCode == KeyEvent.KEYCODE_DPAD_CENTER) ||

              (keyCode == KeyEvent.KEYCODE_ENTER)) {

            String newItem = myEditText.getText().toString();

            onNewItemAddedListener.onNewItemAdded(newItem);

            myEditText.setText("");

            return true;

          }

        return false;

      }

    });

    return view;

  }

  @Override

  public void onAttach(Activity activity) {

    super.onAttach(activity);

//activity为管理fragment的容器,在这里可获得一个父容器的实例对象, 

    try {

      onNewItemAddedListener = (OnNewItemAddedListener)activity;

    } catch (ClassCastException e) {

      throw new ClassCastException(activity.toString() + 

                " must implement OnNewItemAddedListener");

    }

  }

}



package com.paad.todolist;


import java.util.ArrayList;


import android.app.Activity;

import android.app.FragmentManager;

import android.os.Bundle;

import android.widget.ArrayAdapter;


public class ToDoListActivity extends Activity implements NewItemFragment.OnNewItemAddedListener {

  

  private ArrayAdapter<String> aa;

  private ArrayList<String> todoItems;


  public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);


    // Inflate your view

    setContentView(R.layout.main);

      

    // Get references to the Fragments

    FragmentManager fm = getFragmentManager();

    ToDoListFragment todoListFragment = 

      (ToDoListFragment)fm.findFragmentById(R.id.TodoListFragment);


    // Create the array list of to do items

    todoItems = new ArrayList<String>();

     

    // Create the array adapter to bind the array to the listview

    aa = new ArrayAdapter<String>(this,

                                  android.R.layout.simple_list_item_1,

                                  todoItems);

     

    // Bind the array adapter to the listview.

    todoListFragment.setListAdapter(aa);

  }

  

  public void onNewItemAdded(String newItem) {

    todoItems.add(newItem);

    aa.notifyDataSetChanged();

  }


}


© 著作权归作者所有

A
粉丝 5
博文 153
码字总数 112691
作品 0
广州
程序员
私信 提问
加载中

评论(2)

A
Angels_安杰 博主

引用来自“烟雨随风1”的评论

111111
???
烟雨随风1
烟雨随风1
111111
Flutter 49: 图解 Flutter 与 Android 原生交互

小菜上一篇简单学习了一下 Android 原生接入 Flutter Module,现在学习一下两者之间的数据交互; Flutter 与 Android/iOS 之间信息交互通过 Platform Channel 进行桥接;Flutter 定义了三种不...

阿策神奇
06/19
0
0
android学习笔记之Fragment(三)

写的只是个人的理解,希望有错大神们能指出来。 通过Fragments来构建你的动态Activity布局: 预先构建出模型,like this: <?xml version=”1.0” encoding=”utf-8”?> <LinearLayout xmlns:...

Chanimalx
2013/01/02
12.5K
2
C#-Xamarin的Activity传值与Fragment引用

前言 我们学习任何一个新框架时,肯定都需要学习它的子页面用法,因为子页面是封装公共内容最好的容器。 在Xamarin里子页面为Fragment,翻译过来是片段的意思。 Fragment 下面我们来学习Fra...

kiba518
03/20
0
0
一起学Android之Fragment

概述 本文以一个简单的小例子,简述在Android开发中,Fragment的常见用法,仅供学习分享使用,如有不足之处,还请指正。 什么是Fragment? Fragment代表一个功能或者用户界面的一部分。一个A...

Alan.hsiang
06/01
0
0
01.Android之基础组件问题

目录介绍 1.0.0.1 说下Activity的生命周期?屏幕旋转时生命周期?异常条件会调用什么方法? 1.0.0.2 后台的Activity被系统回收怎么办?说一下onSaveInstanceState()和onRestoreInstanceStat...

潇湘剑雨
01/07
20
0

没有更多内容

加载失败,请刷新页面

加载更多

代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
今天
5
0
学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
今天
8
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
12
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
16
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部