这是一个完整的项目,完整复制就能运行
* 本项目的功能是:
* 页面填入数据,点下一步,跳到下一页,发现填错了* 在跳到上一页
* 刚才上一页的数据还在,而且还会显示在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>