Activity间的跳转,startActivity与startActivityForResult
JreduCh04 2016-07-30
跳转 (由一个画面跳转到另一个画面)
两种方法:Intent中 startActivity、startActivityForResult。
后者可设置requestCode(申请码)用于获得返回值,即由一个画面传数据到
多个画面(相同的数据),完成不同的功能,此时的requestCode的可通过判断
来获得返回值。
例;startActivity 在第一个画面中设置一个按钮,按下按钮跳转到第二个画面。
lay_out中,相对布局中设置一个Button,id为bt1;
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.administrator.jreduch04.MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/bt1"
android:text="跳转"
android:layout_below="@+id/textView"
android:layout_alignStart="@+id/bt2"
android:layout_marginTop="52dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/bt2"
android:text="跳转返回结果"
android:layout_below="@+id/bt1"
android:layout_toEndOf="@+id/textView"
android:layout_marginTop="52dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="100dp"
android:id="@+id/tv"
android:text="结果是:"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_marginBottom="102dp"
android:textColor="#ee1414"
android:textIsSelectable="false" />
</RelativeLayout>
MainActivity:
package com.example.administrator.jreduch04;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private Button bt1; //设置以一个Button,测试startActivity
private Button bt2; //设置第二个Button,测试startActivityForResult
private TextView tv; //设置一个TextView ,用于显示测试startActivityForResult返回的值
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt1 = (Button) findViewById(R.id.bt1);//通过 findViewById找到
//Button,设置id的作用就是
//通过findViewByld找到;
tv = (TextView) findViewById(R.id.tv);
bt2 = (Button) findViewById(R.id.bt2);
bt1.setOnClickListener(new View.OnClickListener() { //设置一个bt1的
@Override //点击事件
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent); //Intent的
//有两个参数,
} //MainActivity.this(第一个画面)
}); //SecondActivity.class(第二个画面)
button.setOnClickListener(new View.OnClickListener() { //设置一个Button,
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,ThActivity.class);
startActivityForResult(intent, 119);
}
});
bt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("arg1",5); //intent.putExtra把名为arg1值为5,arg2
intent.putExtra("arg2", 6); //值为6,传给SecondActivity
startActivityForResult(intent, 110); //110自己设置,即为申请码
}
});
protected void onActivityResult(int requestCode, int resultCode, Intent data) { //与startActivityForResult配套
super.onActivityResult(requestCode, resultCode, data); //requestCode(申请码), 用于判断
Intent intent = getIntent(); //发出的哪个请求 resultCode(结果吗),
if(requestCode ==110){ //110即为上面设置的 //可用来判断是哪个Activity返回的数据
tv.setText("结果是加法:" + resultCode);} //resultCode为SecondActivity中设置的结果码 ,但结果码为"arg1+arg2",就实现了相加的操作
else if(requestCode ==119){
tv.setText("老师:"+data.getStringExtra("re"));//得到ThActivity中的EditView中的文本
}
}
}
package com.example.administrator.jreduch04;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class SecondActivity extends AppCompatActivity { //SecondActivity 第二个画面
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Intent intent= getIntent(); //必须使用Intention方法
int arg1 = intent.getIntExtra("arg1",0);//调用方法intention.getIntExtra
int arg2 = intent.getIntExtra("arg2",0); //得到MainActivity穿来的
//arg1,arg2;第二个参数为没得到
//setResult(120); //arg1,arg2时的数值。
if(arg1>0 && arg2>0){
setResult(arg1+arg2,intent); //setResult中的第一个参数为resultCode,第二个参数为Intention date,返回相加的数值,
finish(); //不能漏掉,否则不能返回第一个画面
}
}
}
package com.example.administrator.jreduch04;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView; //实现由MainActrivity跳转到ThActivity
//输入问题答案,再MainActivity中显示
public class ThActivity extends AppCompatActivity { //设置第三个Activity
private EditText editText; //设置EditView,输入问题答案
private Button button3; //按下button在MainActivity中显示
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_th);
editText= (EditText) findViewById(R.id.editText);
button3 = (Button) findViewById(R.id.button3);
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=getIntent();
final String st= editText.getText().toString();//得到输入到EditView中的文本
intent.putExtra("re", st); //调用intent.putExtra,返回
setResult(1, intent);
finish();
}
});
}
}
Activity间的跳转,startActivity与startActivityForResult的更多相关文章
- Activity组件:(一)通过显式意图和隐式意图来实现Activity间的跳转
一.通过显式意图来实现Activity间的跳转 显式意图是指在创建Intent对象时就指定接受者组件 /** * 下面是通过显式意图进行跳转,即明确写出要跳转到SecondActivity.class ...
- Android Activity间动画跳转
本博文主要介绍activity间动画跳转的问题,在这里讲一下怎么设置全部activity的动画跳转和退出跳转.事实上有些软件已经这样做了.比方我们都比較熟悉的大众点评网. 以下我们通过一个实例来看一下 ...
- Android开发之Activity的创建跳转及传值
在Android系统的江湖中有四大组件:活动(Activity), 服务(Service), 广播接收器(Broadcast Reciver)和内容提供者(Content Provider).今天所介 ...
- android学习日记05--Activity间的跳转Intent实现
Activity间的跳转 Android中的Activity就是Android应用与用户的接口,所以了解Activity间的跳转还是必要的.在 Android 中,不同的 Activity 实例可能运 ...
- Android Activity间跳转与传递数据
1 概述 Activity之间的跳转主要使用 startActivity(Intent intent); startActivityForResult(Intent intent,int reques ...
- Android四大组件之——Activity的开启:StartActivity()和StartActivityForResult()(图文详解)
如需转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai 联系方式:JohnTsai.Work@gmail.com ...
- 第35讲 Activity入门和跳转
第35讲Activity入门和跳转 1.Activity Activity是用户接口程序.在Android当中,Activity提供可视化的用户界面,一个Android应用通常由多个activity组 ...
- startActivity与startActivityForResult的使用小结
1.在一个Activity中想要启动进入另一个Activity时,通常我们使用startActivity这个方法来实现,代码如下: 其中MainActivity为源activity,ActivityL ...
- 第一课android开发之在activity间传递参数
一.活动间简单参数传递:1.在布局中添加按钮,用<Button,用id设置id名称,id="@+id/这儿填写你要设置成的名称":用text设置按钮上显示的文字.text=& ...
随机推荐
- ibatis把表名作为一个参数报错问题的解决方案
用ibatis的时候,想把表名也作为一个参数传进去,可是报错了,在ibatis配置文件里面是#resource#的方式,报错信息如下: org.apache.cxf.interceptor.Fault ...
- Android 对话框弹出位置和透明度
在Android中我们经常会用AlertDialog来显示对话框.通过这个对话框是显示在屏幕中心的.但在某些程序中,要求对话框可以显示在不同的位置.例如,屏幕的上方或下方.要实现这种效果.就需要获得对 ...
- [cocos2d] 调用动画方法
利用texture atlases生成动画 中讲到如何添加动画,如果想要调用已添加的动画怎么办? 在1.0.1版本以前的cocos2d添加动画的方法为: CCAnimation *anim = [CC ...
- leetcode Longest Common Prefix 多个字符串的最长字串
public class Solution { public String get(String a,String b) { if(a==""||b=="") ...
- 600字读懂 Git
译注:来自 Hacker School 的 Mary Rose Cook 实现了一个纯 JavaScript 写就的 Git:Gitlet,包含了最主要的一些命令.这个项目一是为了了解 Git 内部原 ...
- 常用shell变量$#,$@,$0,$1,$2等
常用shell变量$#,$@,$0,$1,$2的含义解释: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返 ...
- MySQL 5.7版本安装教程-踩坑总结
下载 MySQL下载地址 选择下载64位(看自己电脑是32位还是64位) 点击下载之后,它会让你登录,没有Oracle账户,跟着它的步骤注册一个就好了. 安装 打开下载好的压缩包解压到你的某一目录下, ...
- c#基础语言编程-装箱和拆箱
引言 为什么有装箱和拆箱,两者起到什么作用?NET的所有类型都是由基类System.Object继承过来的,包括最常用的基础类型:int, byte, short,bool等等,就是说所有的事物都是对 ...
- java实现链表结构
1. 定义节点node public class Node<T> { private Node<T> pre; private Node<T> next; priv ...
- HTML5 Shiv – 让该死的IE系列支持HTML5吧(转)
摘自: http://www.cnblogs.com/yuzhongwusan/archive/2011/11/17/2252207.html HTML5能为我们做的事儿很多,最为可口的就是语义化标签 ...