一。 Intent和startActivity

1.在一个Activtiy中可以使用startActivity()去开始另一个制定的Activity

但在android3.0(是针对平板出的产品)之后出现了碎片处理(fragment),在平板的屏幕处理中,一个屏幕可以有两个Activity,其中一个Activity可以做成多个fragment,
而另一个Activtiy中可以用来进行fragment对应的显示。 因此,一个activity中可以有多个fragment。

2.Intent intent = new Intent();
startActivity(intent)

3.创建Activity
当你的工程建立好了之后,可以直接右键包名,选择new->other->android:android activtiy,系统会自动给你生成这个activity对应的清单文件和布局文件,很方便
Intent intent = new Intent();
intent.setClass(this,SetingActivity.class);
startActivity(intent);

4.activity之间如何进行参数传递
参数传递对应的有3中方法
》第一种:
Intent intent = new Intent();
intent.setClass(this,SetingActivity.class);
intent.putExtras(name,value);
startActivity(intent);
这种方法可以传一个键值对
》第二种:
第二种仅仅是把第一种进行改写一下,介绍第二种之前先介绍一下onCreat方法里面的那个参数:Bundle类型
Bundle 是android中提供的传递数据的类型,使用方法类似于HashMap。因此上面的这一行
intent.putExtras(name,value);代码的操作类似于调用如下方法:
public void putExtra(String name, String value){
Bundle bundle = new Bundle();
bundle.putString(name,value);
intent.putExtras(bundle);
}
为什么要这样做呢?这样做仅仅是为了封装以下,操作方便而已
因此第二种方法可以这样做:

Intent intent = new Intent();
intent.setClass(this,SetingActivity.class);
Bundle bundle = new Bundle();
bundle.putString("name1","我是名字1的value");
bundle.putString("name2","我是名字2的value");
bundle.putString("name3","我是名字3的value");
intent.putExtras(bundle);
startActivity(intent);
这样的好处是可以传多个键值对
》第三种:
如果是对象怎么办,使用上面的那种方法就没法传值了吧。
不过putExtra还有另为一种方法,如下:
public Intent putExtra(String name,Serializable){}
注意这个Serializable的意思是序列化,Serializable是个接口,因此,如果是Serializable的子类都能使用,因此把类实现了Serializable这个借口就可以了不是么
intent.put("object",user);
因此,user只要实现了Serializable这个接口就可以了(在序列化时候,系统会提示你给一个版本id,只要提供一个就行了,补充一点:不过如果user是内部类的话,序列化会出现问题)

5.如何获取参数
在另一个Activity中可以使用
getIntent()就可以拿到对应的意图:
Intent intent = getIntent();
Bundle bundle = intent.getExtra();
User user = (User)bundle.get("object");

二。 Intent和startActivityForResult()
startActivity用于把数据传过去,有时候需要把数据传回来
startActivityForResult()
比如:你的程序把参数传给照相机,照相机照完相之后把相片传给你的程序

发起方要重写onActivityResult()来接收执行方回送的数据。
执行方调用setResult()来传递想要会送给发送方的数据,一般执行方方的数据也是意图,意图里面放的数据

@1.发送方

startActivityForResult(intent,requestCode);

requestCode:相当于一个id,用于指定这个intent是我发出来的,也就是用于指定我自己的标示。在onActivityResult()方法里面能够进行判断

@2.接收方

在oncreat方法里面进行接收,然后进行处理,通过setResult把数据返回给发送方

setResult(resultCode, data);其中resultCode用于标示接收方自己。data是返回的数据,类型是Intent类型

@3.发送方

此时放送方能够收到数据了,不过要重写onActivityResult方法,方法如下:

protected void onActivityResult(int requestCode, int resultCode, Intent data)

requestCode就是第一步指定的requestCode,resultCode就是第二步指定的resultCode,data就是第二步指定的data。因此在onActivityResult要对前两个参数进行判断,都满足了才能使用第三个参数的数据

三.startActivityForResult的例程

下面是一个startActivityForResult的一个demo:

@1.发送方的MainActivity.java和其中使用的相加对应的javaBean对应的类的代码如下:

package com.zyf.android.activityresult;

import com.zyf.android.bean.AddBean;
import com.zyf.android.util.LogUtil; import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); Intent intent = new Intent();
intent.setClass(this, OtherActivity.class);
LogUtil.d(LogUtil.TAG, "data from MainActivity");
intent.putExtra("add",new AddBean(,));
startActivityForResult(intent, ); } @Override
public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu);
return true;
} @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == && resultCode ==){
Bundle bundle = data.getExtras(); int result =bundle.getInt("result"); LogUtil.d(LogUtil.TAG, "result is:"+result); }
}
} /**
*javaBean对应的类,可以发现这个类实现了序列化的操作,因此能够进行数据传递
*/
package com.zyf.android.bean; import java.io.Serializable; public class AddBean implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private int a;
private int b; public AddBean(int a, int b) {
super();
this.a = a;
this.b = b;
}
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
} }

@2.接收方

接收方是另一个Activity,关于多Activity如何创建,很简单,就是在src上新建选择android->Activity就可以建一个activity了

package com.zyf.android.activityresult;

import com.zyf.android.bean.AddBean;
import com.zyf.android.util.LogUtil; import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu; public class OtherActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_other); Intent intent = getIntent(); Bundle bundle =intent.getExtras();
//intent.get
AddBean addBean = (AddBean)bundle.getSerializable("add"); int result = addBean.getA() + addBean.getB();
intent.putExtra("result", result);
LogUtil.d(LogUtil.TAG, "enter the other Activity");
//LogUtil.d(LogUtil.TAG, "requestCode is:"+requestCode +" resultCode is:"+resultCode);
setResult(10, intent); } @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.other, menu);
return true;
} }

@3.运行的结果如下:

可以看到实现了数据从MainActivity到OtherActivity的传递,并在OtherActivity中进行相加把结果传回给MainActivity的目的。

activity-intent-startActivity-startActivityResult的更多相关文章

  1. 【转】Android总结篇系列:Activity Intent Flags及Task相关属性

    [转]Android总结篇系列:Activity Intent Flags及Task相关属性 同上文一样,本文主要引用自网上现有博文,并加上一些自己的理解,在此感谢原作者. 原文地址: http:// ...

  2. [Android实例] Activity实例StartActivity出现NullPointer异常

    [Android实例] Activity实例StartActivity出现NullPointer异常 [android实例教程] 在Android低版本(如2.3.3)中出现如下“界面跳转”的错误: ...

  3. (转载)activity外部调用startActivity的new task异常解析

    activity外部调用startActivity的new task异常解析 泡在网上的日子 / 文 发表于2013-09-07 12:45  第1314次阅读 异常,android,activity ...

  4. Activity Intent Flags及Task相关属性

    转自http://www.cnblogs.com/lwbqqyumidi/p/3775479.html 今天我们来讲一下Activity的task相关内容. 上次我们讲到Activity的四种启动模式 ...

  5. Android总结篇系列:Activity Intent Flags及Task相关属性

    同上文一样,本文主要引用自网上现有博文,并加上一些自己的理解,在此感谢原作者. 原文地址: http://blog.csdn.net/liuhe688/article/details/6761337 ...

  6. Android:Activity & Intent

    参考:<第一行代码:Android> 郭霖(著)   2.2 Activity的基本用法 隐藏标题栏 在AndroidManifest.xml中配置,作为全局配置,在所有Activity范 ...

  7. Activity Intent相关FLAG介绍

    先首先简单介绍下Task和Activity的关系   Task就像一个容器,而Activity就相当与填充这个容器的东西,第一个东西(Activity)则会处于最下面,最后添加的东西(Activity ...

  8. Activity intent经常使用的 FLAG

    Intent.FLAG_ACTIVITY_NEW_TASK 默认的跳转类型,会重新创建一个新的Activity,不过与这种情况,比方说Task1中有A,B,C三个Activity,此时在C中启动D的话 ...

  9. Activity中的startActivityResult,setResult,finish,onActivityResult的关系

    一:首先图示: 二:代码: 1:方法selectName public void selectName(View view){ Intent intent = new Intent(this,Name ...

  10. Android Studio Activity Intent 闪退崩溃 Toolbar

    今天写登录注册页面,点击登录页面的“注册”按钮后软件突然崩溃,直接闪退,因为是新手,只能去网上搜.虽然网上解决方法众多,但也没找到可行的.想起来可以看Logcat,马上重新运行应用,查看崩溃时的日志, ...

随机推荐

  1. DM8168 编译filesystem步骤

    在板子跑起来之前,需要先编译好8168的文件系统.前提是已经设置好板子的类型等参数,详见<DM8168环境搭建> 1.进入<DVR_RDK_BASE>/dvr_rdk目录 ma ...

  2. 【转载】JavaEE权限管理分析

    JavaEE权限管理分析 一.背景 在 Web 应用开发中,安全一直是非常重要的一个方面.安全虽然属于应用的非功能性需求,但是应该在应用开发的初期就考虑进来.如果在应用开发的后期才考虑安全的问题,就可 ...

  3. 一周一话题之三(Windows服务、批处理项目实战)

    -->目录导航 一. Windows服务 1. windows service介绍 2. 使用步骤 3. 项目实例--数据上传下载服务 二. 批处理运用 1. 批处理介绍 2. 基本语法 3. ...

  4. 【网络流24题】 No.5 圆桌问题 (多重匹配)

    [题意] 假设有来自 n 个不同单位的代表参加一次国 际会议.每个单位的代表数分别为r i ni , = 1,2, .会议餐厅共有 m 张餐桌,每张餐桌可容纳 ci (i = 1,2, , m) 个 ...

  5. 李洪强漫谈iOS开发[C语言-030]-逻辑运算符

  6. 如何让windows版Safari支持H5 audio/video?

    今天在windows版Safari上看效果的时候惊奇地发现它竟然不支持HTML5的audio/video, 这样的话就无法复现不少ios上出现的问题. 在同事提醒下, 发现Safari HTML5 A ...

  7. ZOJ3582:Back to the Past(概率DP)

    Recently poet Mr. po encountered a serious problem, rumor said some of his early poems are written b ...

  8. 【转】Android中自定义控件的步骤

    原文网址:http://blog.csdn.net/lianchen/article/details/48038969 Android开发中难免遇到需要自定义控件的需求,有些是产品的要求在Androi ...

  9. HDU-4300 Clairewd’s message

    http://acm.hdu.edu.cn/showproblem.php?pid=4300 很难懂题意.... Clairewd’s message Time Limit: 2000/1000 MS ...

  10. .NET混淆工具 (Dotfuscator Professional Edition)

      如果不想自己辛辛苦苦码出来的作品被人轻易的破解cpoy就使用这款工具试试吧.^_^   使用版本:4.9.7500.9484 ,破解版:http://pan.baidu.com/s/1dDH7lr ...