Activity跳转——返回数据到前Activity
来源:互联网 发布:淘宝和别人互刷商品 编辑:程序博客网 时间:2024/05/18 01:41
Android的startActivityForResult(Intent intent, int requestCode)方法可以用onActivityResult(int requestCode, int resultCode, Intent data)方法获得前Activity结束之后返回的数据。在startActivityForResult(Intent intent, int requestCode)方法中,第一个参数intent表示启动指定的Activity并且期望指定的Activity返回结果,第二个参数代表请求码,表示是哪个Activity请求返回结果;当新的Activity关闭后,系统都会自动调用回调方法onActivityResult(int requestCode, int resultCode, Intent data),为了知道该方法是由谁触发,可以使用requestCode,为了知道该结果由哪个新的Activity所返回,可以使用resultCode,resultCode由新的Activity结束前调用setResult(int resultCode, Intent intent)设置,data则是新的Activity所返回的数据。以下例子点击按钮进入注册界面,提交数据返回结果到第一Activity进行显示。
1.主界面只包含一个Button控件和TextView控件。(省略)
2.注册界面的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"
android:padding="@dimen/activity_vertical_margin">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="账号:"
android:textSize="16sp"/>
<EditText
android:id="@+id/etName"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="text"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密码:"
android:textSize="16sp"/>
<EditText
android:id="@+id/etPass"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="性别:"
android:textSize="16sp"/>
<RadioGroup
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:checkedButton="@+id/male">
<RadioButton
android:id="@+id/male"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男"/>
<RadioButton
android:id="@+id/female"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女"/>
</RadioGroup>
</LinearLayout>
<Button
android:id="@+id/btnSubmit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="注册并返回上一页面"
/>
</LinearLayout>
3.主界面java代码:
public class MainActivity extends Activity {
private Button BtnReg;
private TextView TvShow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BtnReg = (Button)findViewById(R.id.btnReg);
TvShow = (TextView)findViewById(R.id.tvShow);
BtnReg.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,RegActivity.class);
startActivityForResult(intent, 10); //请求码用于标识请求返回数据
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==10 && resultCode==1) //匹配请求码和结果码,需要知道谁请求返回数据和谁返回数据,匹配则显示数据
{
StringBuilder sb = new StringBuilder();
sb.append("您的姓名:").append(data.getExtras().getString("name")).append("\n")
.append("您的密码:").append(data.getExtras().getString("pass")).append("\n")
.append("您的性别:").append(data.getExtras().getString("sex"));
TvShow.setText(sb.toString());
}
}
}
4.新Activity的java代码:
public class RegActivity extends Activity {
private EditText et_name;
private EditText et_pass;
private RadioButton rb_male;
//private RadioButton rb_female;
private Button b_submit;
private final int RESULTCODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_reg);
et_name = (EditText)findViewById(R.id.etName);
et_pass = (EditText)findViewById(R.id.etPass);
rb_male = (RadioButton)findViewById(R.id.male);
//rb_female = (RadioButton)findViewById(R.id.female);
b_submit = (Button)findViewById(R.id.btnSubmit);
b_submit.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
/**
* 此处省略判断输入是否为空以及输入是否非法
*/
String str_name = et_name.getText().toString();
String str_pass = et_pass.getText().toString();
String str_sex = rb_male.isChecked() ? "男":"女";
Intent data = getIntent(); //获取上一个Activity对应的Intent
data.putExtra("name", str_name);
data.putExtra("pass", str_pass);
data.putExtra("sex", str_sex);
setResult(RESULTCODE, data);//设置结果码并返回结果
finish(); //结束该Activity
}
});
}
}
4.配置AndroidManifest.xml
<activity
android:name="com.czh.startactivityforresultdemo.RegActivity"
android:label="@string/app_name" >
</activity>
5.运行结果:
主界面:
注册界面:
返回结果后的主界面:
- Activity跳转——返回数据到前Activity
- Activity 返回数据到前一个activity
- 返回数据到前一个Activity--startActivityForResult
- 返回数据到前一个activity-startActivityForResult
- Android中返回数据到前一个Activity — startActivityForResult方法
- Android Activity之间的数据返回——下一个Activity返回到上一个Activity
- Activity返回数据的跳转
- 返回数据到前一个Activity---startActivityForResult方法
- 返回数据到前一个Activity---startActivityForResult方法
- 3.11 MonoForAndroid用户人机界面--返回数据到前一个Activity
- Android入门--返回数据到前一个Activity--startActivityForResult 方法
- 返回数据到前一个Activity StartActivityForResult方法
- A(里面加载webview) activity 跳转至 A activity,按返回键前一个A activity数据没有了
- fragment跳转到activity返回卡顿
- Android中页面传值(从跳转到的Activity回到跳转前的Activity,如何保留前一Activity的数据)
- activity的跳转带返回数据
- Tabhost中子Activity跳转到新的activity,从该activity重新返回子Activity问题解决
- Activity跳转与返回
- hdu 3371 Connect the Cities
- poj 1963 Corporative Network
- 二分查找的两种方式
- C++之MFC访问ACCESS数据库注意要点
- matlab中load与savd函数的用法
- Activity跳转——返回数据到前Activity
- POJ-3469-Dual Core CPU
- 百度谷歌关键词排名的小技巧,SEO小技巧
- ZOJ 2588 Burning Bridges(求含重边的无向连通图的割边) - from lanshui_Yang
- 低功耗STM32L-Discovery开发板评测(二)
- WinDbg
- js2dx --- UI
- Maya: 菜单 编辑曲线 > 复制曲面曲线
- Hibernate的Session