Android中StartActivityForResult的基本用法

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

* 本项目的功能是:

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

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


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

Android中StartActivityForResult的基本用法_第1张图片


布局

activity_main.xml

    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


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


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


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


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


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



activity_second.xml


    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


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



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注册:

          android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
                    android:name="com.activity.android.MainActivity"
            android:label="@string/app_name" >
           
               


               
           

       
                    android:name="com.activity.android.SecondActivity"
            >
   












你可能感兴趣的:(Activity)