Android 四大组件之 Activity-带值跳转

来源:互联网 发布:淘宝如何认证企业店铺 编辑:程序博客网 时间:2024/06/06 11:02

从一个Activity跳转到另外一个Activity,并且可以带值跳转,但我们日常生活中使用App时会经常遇到这种状况,假设有某个界面A,点击上面不同的按钮会启动不同的界面B、C、D。。。,这些界面会处理某个业务并将处理结果返回给界面A,可以采用带返回值得跳转来实现这功能
Activity带返回值跳转
实现Activity带返回值的跳转,主要通过3个方法:
StartActivityForResult(Intent intent,requestCode):用于启动另一个Activity,并并获取其返回值
参数intent表示意图,用于指定从哪一个界面去获取返回值。
参数requestCode表示请求码,要求大于等于0。

setResult(resultCode,data):用于返回第二个界面处理后的数据
参数resultCode表示返回码,可以用任意的整型值来表示,一般会使用Activity中的常量来表示,RESULT_CANCELED(表示0)、RESULT_OK(表示-1)、RESULT_FIRST_USER(表示1)
参数data表示返回的数据,用Intent对象来存放这些数据。
在设置了返回值后,需要调用finish()方法类销毁当前界面,才能够返回到上一个界面。
OnActivityResult(int requestCode,int resultCode,Intent data):用于处理第二个界面的返回值
用于处理第二个界面的返回值
requestCode就是startActivityForResult方法中的请求码resultCode表示第二个界面的返回码data就是返回的数据。
三个方法的使用介绍

  1. congdiyige页面跳转到第二个页面时,使用startActivityForResult方法
  2. 在第二个页面传回数据时,使用setResult方法
  3. 数据传回来之后使用onActivityResult方法处理数据
    代码如下:

MainActivity.java
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;
import android.widget.EditText;
public class MainActivity extends Activity {
Button btn;
EditText et;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取组件对象
et=(EditText) findViewById(R.id.editText1);
btn=(Button) findViewById(R.id.button1);

    //设置监听    btn.setOnClickListener(new OnClickListener() {        //点击事件        @Override        public void onClick(View v) {            //创建意图对象,不要忘记注册SecondActivity            Intent intent = new Intent();            intent.setClass(MainActivity.this, SecondActivity.class);            //跳转获取返回值 11,表示requestcode             startActivityForResult(intent, 11);        }    });}//用于处理第二个界面的返回值@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {    super.onActivityResult(requestCode, resultCode, data);    if(data!=null){//判断意图是否为空        String str=data.getStringExtra("msg");        if(requestCode==11){            et.setText(str);        }    }}

}
SecondActivity.java

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;import android.widget.EditText;public class SecondActivity extends Activity {    EditText et;    Button btn;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_second);        //获取组件对象        et=(EditText) findViewById(R.id.editText2);        btn=(Button) findViewById(R.id.button2);        //设置监听事件        btn.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {//处理监听事件                Intent intent=new Intent();                //获取输入的数据                String str=et.getText().toString().trim();                //将数据绑定到intent上                intent.putExtra("msg", str);                //回传数据20,为resultCode                setResult(20, intent);            }        });    }}

activity_main.xml

<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=".MainActivity" >    <Button        android:id="@+id/button1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerHorizontal="true"        android:layout_centerVertical="true"        android:text="跳转" />    <EditText        android:id="@+id/editText1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_above="@+id/button1"        android:layout_centerHorizontal="true"        android:layout_marginBottom="76dp"        android:ems="10" >        <requestFocus />    </EditText>    <TextView        android:id="@+id/textView1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_centerHorizontal="true"        android:layout_marginTop="23dp"        android:text="第一个界面" /></RelativeLayout>

activity_second.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <Button        android:id="@+id/button2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerHorizontal="true"        android:layout_centerVertical="true"        android:text="回传" />    <EditText        android:id="@+id/editText2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_centerHorizontal="true"        android:layout_marginTop="81dp"        android:ems="10" >        <requestFocus />    </EditText>    <TextView        android:id="@+id/textView1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_centerHorizontal="true"        android:layout_marginTop="18dp"        android:text="第二个界面" /></RelativeLayout>

结果
这里写图片描述
这里写图片描述
这里写图片描述

0 0
原创粉丝点击