android之Activity回传数据
约定:当Activity发生跳转时将原来的Activity成为父Activity,将新出现的Activity成为子Activity。
情景设置
下面是个发短信的Activity

当我们点击图中的+按钮后会跳转到联系人界面

在联系人界面选择某个联系人后,比如联系人ccc,联系人界面消失并回到发短信界面。

这其中设计到了Activity的跳转以及数据回传
过程分析
当在父Activity中进行了某些操作后,产生了子Activity。然后我们在子Activity又进行了一些操作,同时希望父Activity知道这些操作。那么在子Activity退出时将数据封装到一个对象中,而在父Activity中接受回传的这个对象。
编程实现
布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/contact"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="请输入联系人"/>
<Button
android:id="@+id/add"
android:layout_weight="0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+"
android:onClick="click"/>
</LinearLayout>
<EditText
android:id="@+id/content"
android:gravity="top"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:hint="请输入消息内容"/>
<Button
android:id="@+id/reply"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="快捷回复"
android:onClick="click1"/>
<Button
android:id="@+id/send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="发送短信"/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="wrap_content"> </ListView>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="25sp"/>
</LinearLayout>
java代码
package xidian.dy.com.chujia; import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText; public class MainActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); } //点击事件发生时切换至联系人Activity
public void click(View v) {
Intent intent = new Intent();
intent.setClass(this, ContactActivity.class);
intent.addCategory(Intent.CATEGORY_DEFAULT);
//设置子Activity在销毁时会有数据返回
//10为子Activity的编号
startActivityForResult(intent, 10);
} public void click1(View v) {
Intent intent = new Intent();
intent.setClass(this, ReplyActivity.class);
intent.addCategory(Intent.CATEGORY_DEFAULT);
startActivityForResult(intent, 20);
} //当子Activity被销毁的后,父Activity会回到前台,这时候该方法就会被调用
//来获取子Activity返回给父Activity的数据 /**
*
* @param requestCode 在创建子Activity时为其指定的的编号
* @param resultCode 返回的数据类型(从功能上划分),一个子Activity可能返回种数据类型(如联系人姓名/联系人电话)
* @param data 返回的数据
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//获取返回的数据
String name = data.getStringExtra("name");
//判断是哪个Activity返回的
if(requestCode == 10) {
EditText et = (EditText) findViewById(R.id.contact);
if(et != null)
et.setText(name);
}
else if(requestCode == 20) {
EditText et = (EditText) findViewById(R.id.content);
if(et != null)
et.setText(name);
}
}
}
package xidian.dy.com.chujia; import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView; /**
* Created by dy on 2016/7/8.
*/
public class ContactActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contact);
ListView listView = (ListView) findViewById(R.id.lv);
final String[] strs = new String[]{"aaa", "bbb", "ccc","ddd","eee","fff","ggg"};
if(listView != null) {
listView.setAdapter(new ArrayAdapter<>(this, R.layout.item_list, R.id.item, strs));
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent = new Intent();
intent.putExtra("name", strs[position]);
setResult(1, intent);
finish();
}
});
}
}
}
package xidian.dy.com.chujia; import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView; /**
* Created by dy on 2016/7/8.
*/
public class ReplyActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contact);
ListView listView = (ListView) findViewById(R.id.lv);
final String[] strs = new String[]{"你好", "在吗", "大海"};
if(listView != null){
//填充布局
listView.setAdapter(new ArrayAdapter<>(this, R.layout.item_list, R.id.item, strs));
//设置监听器
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent data = new Intent();
data.putExtra("name", strs[position]);
//设置数据类型
setResult(1, data);
//销毁对象
finish();
}
});
}
}
}
清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="xidian.dy.com.chujia">
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="主界面">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ContactActivity">
<intent-filter>
<action android:name="android.intent.action.contact"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:name=".ReplyActivity">
<intent-filter>
<action android:name="android.intent.action.replay"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
</application>
</manifest>
android之Activity回传数据的更多相关文章
- 05 Activity 回传数据
当从一个Activity跳转到第二个Activity后然 让其处理完业务逻辑回传数据给第一个Activity: 回传调用方法顺序: onActivityResult--->>onResta ...
- Android——不同activity之间数据传递
/* * 不同activity之间数据的传递 */ public class MainActivity extends Activity { private EditText et_name; @Ov ...
- Android中activity保存数据和状态在哪个方法实现
以前只知道在Activity销毁之前,要把数据保存在 onSaveInstanceState(Bundle)方法中,后来学习了别人的微博,学到了很多细节问题,所以整理了一下,希望能帮到大家. 如果看官 ...
- android 不同Activity之间数据传递
1. 传值Activity package mydemo.mycom.demo2; import android.content.Intent; import android.support.v7.a ...
- 转-Activity之间数据传递之Intent数据传递
Intent意图 可用于Activity之间的数据传递,一般可分为下面两种情况,从当前Activity传递到目标Activity后有无返回值: 1.传递后无返回值的情况: 1 2 3 4 5 6 7 ...
- Android activity的回传数据
package com.example.myact3; import android.content.Intent; import android.os.Bundle; import android. ...
- Android笔记——Activity中的回传数据案例(装备选择)
1.创建程序: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns: ...
- Android零基础入门第83节:Activity间数据传递方法汇总
在Activity间传递的数据一般比较简单,但是有时候实际开发中也会传一些比较复杂的数据,本节一起来学习更多Activity间数据的传递. 一.常用数据类型 在前面几节我们只学习了一些常用类型的数据传 ...
- 无废话Android之smartimageview使用、android多线程下载、显式意图激活另外一个activity,检查网络是否可用定位到网络的位置、隐式意图激活另外一个activity、隐式意图的配置,自定义隐式意图、在不同activity之间数据传递(5)
1.smartimageview使用 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&q ...
随机推荐
- asp.net 后台 Http POST请求
时间忙,简单些,直接贴代码上图 百度站长平台为站长提供链接提交通道,您可以提交想被百度收录的链接,百度搜索引擎会按照标准处理 http://zhanzhang.baidu.com/linksubmit ...
- Java的String.valueOf 转换 与、空串+类型变量转换与封装类(Integer)的toString方式转换比较。
1.空串+类型变量方式转换 int i=20; String s=""+i; 这种方式实际上经过了两个步骤,首先进行了i.ToString()把 i 转换为 字符串,然后再进行加法 ...
- day 2 Linux目录结构
Linux系统的目录结构的基本介绍: 1)在逻辑上的所有目录(包括目录下的子目录)都在最高级别的目录“/”下. 根(/)目录是Linux系统中所有目录的起始点(顶点),根下面的目录及子目录是一个有层次 ...
- FastCV安装报错---LaunchAnyWhere错误:载入Java VM时Windows出现错误:2
- 使用jlink直接烧norflash或者nandflash不借助uboot的猜想
由于喜欢折腾,我是在linux下使用jlink的,既然JLinkExe可以进行内存读写操作,loadbin等操作,并且通过指定命令文件支持批量指令输入,那么首先jlink是可以直接访问内部存储器的,包 ...
- 【2016-10-13】【坚持学习】【Day4】【WPF】【ObservableCollection<T>】
今天在项目中使用到这个 ObservableCollection<T> 类,作为数据源集合绑定到控件. 当数据源发生变化,会通知界面显示. 如果用List<T> ,当数据源发生 ...
- shell tips
1.shopt 命令可以设置shell的可选参数 shopt [-psu] [optname...] -s 开启某个选项 -u 关闭某个选项 -p 列出所有可设置的选项 其中开启extglob选项,s ...
- [cocos2d-x]深入--几个代表性的类 (续)
摘要: 此文对cocos2d-x引擎中最具代表性,最能体现框架结构的几个类做了简单的介绍, 包括Director,Application, Renderer, EventDispatcher, Sch ...
- JQuery获取元素的方法总结
JQuery获取元素的方法总结 一.说明 获取元素的方法分为两种:jQuery选择器.jQuery遍历函数. 做个总结,巩固下知识. 二.获取本身 1.只需要一种jQuery选择器 选择器 实 ...
- 开启云时代,银狐H5游戏云通迅框架解决方案出炉!
没有时间开发服务器? 不懂服务器开发? 还在为WEB SOCKET烦恼?还在为网络卡,负载承受能力小烦恼? 银狐H5游戏云通迅框架,集成通讯SDK和开放API,1天即可完成 它也是开放平台,提供游戏需 ...