在Android中打开窗口有两种方式,第一种是不需要返回值的,第二种是带返回值的。

Main.xml文件,程序从这个窗口开始执行。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <Button
android:id="@+id/btn_open1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="第一种方式打开" /> <Button
android:id="@+id/btn_open2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="第二种方式打开" /> </LinearLayout>

FirstActivity.xml,第一个页面文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="第一个窗口" /> </LinearLayout>

SecendActivity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="第二个窗口" /> <Button
android:id="@+id/btnresult"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="回传数据"/> </LinearLayout>

main.java

package com.example.demo;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast; public class MainActivity extends Activity { Button btn_open1;
Button btn_open2; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //第一种方式打开窗口,无返回值
btn_open1 = (Button) findViewById(R.id.btn_open1);
btn_open1.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
// 第一个为当前类的上下文参数,不能直接使用this,需要使用类名.this
// 第二个参数为目标文件的反射对象
Intent intent = new Intent(MainActivity.this, FirstActivity.class);
// 启动新窗口,不需要返回值
startActivity(intent);
}
}); //第二种打开方式,带返回值得
btn_open2 = (Button) findViewById(R.id.btn_open2);
btn_open2.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
// 第一个为当前类的上下文参数,不能直接使用this,需要使用类名.this
// 第二个参数为目标文件的反射对象
Intent intent = new Intent(MainActivity.this, SecendActivity.class); // 第一个参数为intent
// 第二个参数为请求的标志,用来区别提交的activity
startActivityForResult(intent, 1);
}
});
} /**
* 通过这个方法用来接收新页面的返回数据,返回内容为Intent对象
* 第一个参数为请求的id,第一个页面传递过来的标志,用来区别是哪个activity传递过来的。 第二个参数为结果的id,第二个页面返回的标志
* 第三个参数为返回的intent对象,通过他获取跳转页面的返回内容
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data); //requestCode判断是哪个按钮提交的请求,用来区分提交的请求
//resultCode判断是哪个页面返回的结果,用来区分返回的页面请求。
if (requestCode == 1 && resultCode == 2) {
String content = data.getStringExtra("data");
Toast.makeText(this, content, 1).show(); //弹出消息框
}
} }

SecendActivity.java

package com.example.demo;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class SecendActivity extends Activity { Button btn;
String content = "第二个窗口返回的数据"; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.secend_activity); btn = (Button) findViewById(R.id.btnresult); btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent data = new Intent(); //创建返回的Intent对象
data.putExtra("data", content); //为intent对象设置值
setResult(2, data); //设置回传结果 finish(); //关闭窗口
}
}); }
}

点击第一个按钮会打开第一个窗口。

低级第二个按钮会打开第二个窗口,在第二个窗口中点击回传按钮,返回数据到第一个窗口,并关闭当前窗口。

Android学习(八) 打开Activity的更多相关文章

  1. android学习四(Activity的生命周期)

    要学好活动(Activity).就必需要了解android中Activity的声明周期.灵活的使用生命周期.能够开发出更好的程序,在android中是使用任务来管理活动的,一个任务就是一组存放在栈里的 ...

  2. Android学习笔记之Activity详解

    1 理解Activity Activity就是一个包含应用程序界面的窗口,是Android四大组件之一.一个应用程序可以包含零个或多个Activity.一个Activity的生命周期是指从屏幕上显示那 ...

  3. android学习笔记26——Activity

    Activity ==> android中四大组件:Activity.Service.BroadcastReceiver.ContentProvider Activity组件用于对用户呈现操作界 ...

  4. android学习二(Activity)

    前面我简单的介绍了android的一些基础知识,当作热身吧,接下来接触android的四大组件的activity活动. 1.活动Activity是是一种保护用户界面的组件,主要用于和用户进行交互. 活 ...

  5. Android学习笔记:Activity生命周期详解

    进行android的开发,必须深入了解Activity的生命周期.而对这个讲述最权威.最好的莫过于google的开发文档了. 本文的讲述主要是对 http://developer.android.co ...

  6. Android学习整理之Activity篇

    一.Activity概念介绍 activity属于android的四大组件之一(其他的三个: Content provider,Broadcast receiver,Service),它可以理解为一个 ...

  7. Android学习——Fragment与Activity通信(一)

    学会了在Activity中加载Fragment的方法之后,接下来便需要学习Activity和Fragment之间的通信.这一节先学习如何把Activity中的信息传递给Fragment. 基本过程 在 ...

  8. Android学习八:获取网络图片

    看到QQ群里有个朋友说加载图片内存溢出的问题,所以就按照自己的想法试试的.但是按照他的方法,不知道为何没有发生内存溢出,不知道什么情况. 写这篇文章主要有三个目的: 1.多线程的学习 2.图片加载的学 ...

  9. Android学习整理之Activity生命周期篇

    一.Activity生命周期说明   Activity的四种状态: ⒈活动状态(Active or Running):也称为运行状态,处于Activity栈顶,在用户界面中最上层,完全能被用户看到,能 ...

  10. Android学习手记(1) Activity跳转

    新建Project,并将主页命名为MainActivity. 创建一个Activity 在App上“右键->New->Activity->Empty Activity”, 将新建的A ...

随机推荐

  1. mac的vim使用

    再使用Mac编辑文件时感觉非常不爽,没有语法高亮,只能通过设置改变所有字体为同一个颜色,看起来还是别扭, 于是找到方法使用vim时可以实现语法高亮显示,操作步骤如下: 1.进入/usr/share/v ...

  2. Ubuntu系统用户与用户组

    1.查看用户组 vi /etc/group 结果说明: 组名: 组名是用户组的名称,由字母或数字构成.与/etc/passwd中的登录名一样,组名不应重复.   口令: 口令字段存放的是用户组加密后的 ...

  3. [bzoj1001][BJOI2006]狼抓兔子——最大流转最短路,平面图

    题目描述: 给定一个平面图,求最小割. 题解: 本题是一道经典题. 周冬Orz的论文是很好的研究资料. 这道题点太多,所以直接跑dinic无疑会超时. 我们观察原图,发现原图是一个平面图. 什么是平面 ...

  4. PHP会话控制

         会话控制的思想是指能够在网站中根据一个会话跟踪用户.      PHP的会话是通过唯一的会话ID来驱动的.会话ID是一个加密的随机数字.它由PHP生成,在会话的生命周期中都会保存在客户端.它 ...

  5. eclipse easy shell plugin

    svn checkout svn://svn.code.sf.net/p/pluginbox/code/trunk pluginbox-code   Eclipse中Easy Shell插件配置Pow ...

  6. 【原创】Linux环境下的图形系统和AMD R600显卡编程(11)——R600指令集

    1 低级着色语言tgsi OpenGL程序使用GLSL语言对可编程图形处理器进行编程,GLSL语言(以下高级着色语言就是指GLSL)是语法类似C的高级语言,在GLSL规范中,GLSL语言被先翻译成教低 ...

  7. Scala学习随笔——控制语句

    Scala只内置了为数不多的几种程序控制语句:if.while.for.try catch以及函数调用,这是因为从Scala诞生开始就包含了函数字面量,Scala内核没有定义过多的控制结构,而是可以通 ...

  8. Redis设置记录

    首先大前提是,这个redis使用的外网端口,需要在防火墙或者安全组中打开 正常在redis配置文件里有个bind,这个默认是127.0.0.1,如果不修改,就是内网可以访问. 这里有个点需要提一下,就 ...

  9. Guava源码学习(一)Optional

    基于版本:Guava 22.0 Wiki:Using and avoiding null 0:Optional简介 null在很多场景下会引发问题,NullPointerException困扰过无数的 ...

  10. [POI2014]Tourism

    题目大意: 给定一个$n(n\le20000)$条个点,$m(m\le25000)$条边的无向图,保证图中最长路径上的点数不超过$10$.对一个点染色的代价是$w_i$.求使得每个结点都被染色或至少有 ...