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就是返回的数据。
三个方法的使用介绍
- congdiyige页面跳转到第二个页面时,使用startActivityForResult方法
- 在第二个页面传回数据时,使用setResult方法
- 数据传回来之后使用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>
结果
- Android 四大组件之 Activity-带值跳转
- Android四大组件之Activity(跳转与传值)
- Android四大组件(1.5)--Activity的跳转与传值
- Android四大组件之Activity
- Android四大组件之Activity
- Android四大组件之Activity
- Android四大组件之Activity
- android四大组件之Activity
- android四大组件之Activity
- android四大组件之Activity
- android四大组件之Activity
- android四大组件之 Activity
- Android四大组件之Activity
- Android四大组件之Activity
- Android四大组件之Activity
- Android四大组件之Activity
- Android四大组件之Activity
- Android 四大组件之Activity
- 11.1:派生类的使用
- 《UNIX环境高级编程》十九伪终端读书笔记
- Node.js 之 log4js 完全讲解
- Makefile中用宏定义进行条件编译(gcc -D)/在Makefile中进行宏定义-D
- 用webpack把我们的业务模块分开打包
- Android 四大组件之 Activity-带值跳转
- Servlet工作原理解析
- 关于我博客的所有内容
- Top K Frequent Elements
- CSS颜色混合模式
- 图解Java字符串的不变性
- C#控件开发学习问题一:安全透明方法……尝试访问安全关键方法……错误
- Android 中fragment的调用多个fragment的冲突处理
- atom 常用插件集合