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的更多相关文章

  1. Activity组件:(一)通过显式意图和隐式意图来实现Activity间的跳转

    一.通过显式意图来实现Activity间的跳转 显式意图是指在创建Intent对象时就指定接受者组件 /** * 下面是通过显式意图进行跳转,即明确写出要跳转到SecondActivity.class ...

  2. Android Activity间动画跳转

    本博文主要介绍activity间动画跳转的问题,在这里讲一下怎么设置全部activity的动画跳转和退出跳转.事实上有些软件已经这样做了.比方我们都比較熟悉的大众点评网. 以下我们通过一个实例来看一下 ...

  3. Android开发之Activity的创建跳转及传值

    在Android系统的江湖中有四大组件:活动(Activity), 服务(Service), 广播接收器(Broadcast Reciver)和内容提供者(Content Provider).今天所介 ...

  4. android学习日记05--Activity间的跳转Intent实现

    Activity间的跳转 Android中的Activity就是Android应用与用户的接口,所以了解Activity间的跳转还是必要的.在 Android 中,不同的 Activity 实例可能运 ...

  5. Android Activity间跳转与传递数据

    1 概述 Activity之间的跳转主要使用 startActivity(Intent intent); startActivityForResult(Intent intent,int reques ...

  6. Android四大组件之——Activity的开启:StartActivity()和StartActivityForResult()(图文详解)

                如需转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai       联系方式:JohnTsai.Work@gmail.com   ...

  7. 第35讲 Activity入门和跳转

    第35讲Activity入门和跳转 1.Activity Activity是用户接口程序.在Android当中,Activity提供可视化的用户界面,一个Android应用通常由多个activity组 ...

  8. startActivity与startActivityForResult的使用小结

    1.在一个Activity中想要启动进入另一个Activity时,通常我们使用startActivity这个方法来实现,代码如下: 其中MainActivity为源activity,ActivityL ...

  9. 第一课android开发之在activity间传递参数

    一.活动间简单参数传递:1.在布局中添加按钮,用<Button,用id设置id名称,id="@+id/这儿填写你要设置成的名称":用text设置按钮上显示的文字.text=& ...

随机推荐

  1. 【技术贴】SqlServer2008 R2 安装失败提示出现以下错误 服务 MSSQLSERVERO

    Feature: Analysis Services  Status: 失败: 请查看日志了解详细信息  MSI status: 已通过  Configuration status: 失败: 请查看下 ...

  2. 安装drupal练习网站遇到的问题

    1 Skip #conjunction key in __clone() method of core/includes/database/query.inc 解决方案:https://www.dru ...

  3. Keil编译后的各文件介绍

    编译生成的文件: .plg:编译器编译结果 .hex和.bin:可执行文件 .map和.lst:链接文件 .obj:目标文件 .crf..lnp..d和.axf:调试文件 .opt:保存工程配置信息 ...

  4. JSch - Java实现的SFTP(文件下载详解篇)(转)

    上一篇讲述了使用JSch实现文件上传的功能,这一篇主要讲述一下JSch实现文件下载的功能.并介绍一些SFTP的辅助方法,如cd,ls等.   同样,JSch的文件下载也支持三种传输模式:OVERWRI ...

  5. ListView 滚动条的图标样式

    android:fastScrollEnabled="true" android:focusable="true" 在listview的xml文件中添加这两条记 ...

  6. 如何在jasperreport自动生成序号

    在导出报表时,有时候我们需要显示序号,有两种方法: 1.就是再加一个字段,就是说将序号也当做是要导出的字段来处理,然后用程序给这个字段赋值,这方面有点傻,就不说了. 2.利用jasperreport提 ...

  7. [LeetCode#263]Factorial Trailing Zeroes

    Problem: Write a program to check whether a given number is an ugly number. Ugly numbers are positiv ...

  8. poj3233

    这道题其实算是把快速幂的思想用在多项式之中 A+A^2+A^3+…+A^n=(A+A^1…+A^[n/2])+A^[n/2](A+A+A^1…+A^[n/2])+n mod 2*A^n 然后就是打码的 ...

  9. 从PowerDesigner概念设计模型(CDM)中的3种实体关系说起

    转:http://www.cnblogs.com/xingyukun/archive/2007/08/02/840293.html CDM是大多数开发者使用PD时最先创建的模型,也是整个数据库设计最高 ...

  10. android 自动化(1)

    学习android自动化测试要感谢一个朋友耐心的指导 环境搭建:(需要java JDK 以及android SDK) JDK:http://www.oracle.com/technetwork/jav ...