Android中StartActivityForResult的基本用法

这是一个完整的项目,完整复制就能运行 

* 本项目的功能是:

 * 页面填入数据,点下一步,跳到下一页,发现填错了
 * 在跳到上一页
 * 刚才上一页的数据还在,而且还会显示在textview中
 * 原理:
 * startActivityForResult(intent, 1);
 * ----->SecondActivity.this.setResult(1, intent);

 * ----->onActivityResult(int requestCode, int resultCode, Intent data);


这是一个完整的项目完整复制后就能运行



布局

activity_main.xml

<LinearLayout 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:orientation="vertical" >


    <EditText
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />


    <EditText
        android:id="@+id/age"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />


    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="下一页" />


    <TextView
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="TextView" />


    <TextView
        android:id="@+id/textView2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="TextView" />


</LinearLayout>

activity_second.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" >


    <Button
        android:id="@+id/btn2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="返回上一页" />


</LinearLayout>

java代码

MainActivity:

package com.activity.android;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
/**
 * 本项目的功能是:
 * 页面填入数据,点下一步,跳到下一页,发现填错了
 * 在跳到上一页
 * 刚才上一页的数据还在,而且还会显示在textview中
 * 原理:
 * startActivityForResult(intent, 1);
 * ----->SecondActivity.this.setResult(1, intent);
 * ----->onActivityResult(int requestCode, int resultCode, Intent data);
 * 
 * 
 * 
 */


public class MainActivity extends Activity {
private EditText name, age;
private Button next;
private TextView tv1,tv2;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
this.next.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
// 收集界面数据
String named = name.getText().toString().trim();
String aged = age.getText().toString().trim();
if (named!=null&&aged!=null) {
Intent intent = new Intent();
// 把收集到的数据放到bundle中
Bundle bundle = new Bundle();
bundle.putString("name", named);
bundle.putString("age", aged);
// 把Bundle装到intent中
intent.putExtras(bundle);
intent.setClass(MainActivity.this, SecondActivity.class);
//           启动的方式不同。-----> 要求必须去重写onActivityResult方法。
startActivityForResult(intent, 1);

}
}
});


}
//获得当前的Activity中的值。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Intent的对象始终是一个对象
// 进行数据的回显
Bundle bundle=data.getExtras();
String nameStr=bundle.getString("name");
String ageStr=bundle.getString("age");

System.out.println(ageStr+">>>>>>>>>>.");
name.setText(nameStr);
age.setText(ageStr);

tv1.setText(nameStr);
tv2.setText(ageStr);
/*setText();里面放的数据是字符串的时候,才能显示到界面
* 转化成字符串通常有两种写法1.String.valueOf(ageint)
* 2.ageint+"";

*/

}




private void init() {
name = (EditText) findViewById(R.id.name);
age = (EditText) findViewById(R.id.age);
next = (Button) findViewById(R.id.btn);
tv1=(TextView) findViewById(R.id.textView1);
tv2=(TextView) findViewById(R.id.textView2);


}


}

SecondActivity:

package com.activity.android;


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;


public class SecondActivity extends Activity {
private Button btn2;


@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);


btn2 = (Button) findViewById(R.id.btn2);
btn2.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// 使用当前Activity的setResult方法。(达到了1个效果:
// 1、回调MainActivity对应的函数,处理回显的数据)。
Intent intent = getIntent();
SecondActivity.this.setResult(1, intent);
// new SecondActivity().setResult(1, intent);
                //必须销毁当前activity,否则程序无法运行
SecondActivity.this.finish();

}
});


}


}

主清单文件中Activity注册:

 <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.activity.android.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />


                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity 
            android:name="com.activity.android.SecondActivity"
            ></activity>
    </application>












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值