前言:前面我们已经掌握了 Activity 的基本使用,但是那都是在同一个 Activity 中进行操作的。那么若我们要在不同 Activity 之间进行数据交互,这又如何实现?那现在我们依旧以模拟登录注册这一个例子来进行说明
<?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" >
<EditText
android:id="@+id/et_uname"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/et_uname" />
<EditText
android:id="@+id/et_upass"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/et_upass" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="login"
android:text="@string/bt_login" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="regist"
android:text="@string/bt_regist" />
</LinearLayout>
</LinearLayout>
<?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" >
<EditText
android:id="@+id/et_uname"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/et_uname" />
<EditText
android:id="@+id/et_upass"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/et_upass" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="regist"
android:text="@string/bt_regist" />
</LinearLayout>
public class MainActivity extends Activity {
private EditText et_uname;
private EditText et_upass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
}
private void initViews() {
et_uname = (EditText) findViewById(R.id.et_uname);
et_upass = (EditText) findViewById(R.id.et_upass);
}
/**
* 登录
* @param view
*/
public void login(View view){
String uname = et_uname.getText().toString().trim();
String upass = et_upass.getText().toString().trim();
if(TextUtils.isEmpty(uname) || TextUtils.isEmpty(upass)){
Toast.makeText(this, "用户名密码不能为空!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "登录成功!", Toast.LENGTH_SHORT).show();
}
}
/**
* 注册
* @param view
*/
public void regist(View view){
Intent intent = new Intent(this, RegistActivity.class);
int requestCode = 0; // 设置注册操作的请求码为 0
startActivityForResult(intent, requestCode);
}
/**
* 当新开启的 Activity 被关闭时调用的方法: 在该函数内我们进行数据的处理
* 比如我们在此获取从 RegistActivity 中返回的数据
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
System.out.println("onActivityResult...");
if(data != null){
if(requestCode == 0){
String uname = data.getStringExtra("uname");
String upass = data.getStringExtra("upass");
et_uname.setText(uname);
et_upass.setText(upass);
}
}
}
}
代码注解:public class RegistActivity extends Activity{
private EditText et_uname;
private EditText et_upass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_regist);
initViews();
}
private void initViews() {
et_uname = (EditText) findViewById(R.id.et_uname);
et_upass = (EditText) findViewById(R.id.et_upass);
}
public void regist(View view){
String uname = et_uname.getText().toString().trim();
String upass = et_upass.getText().toString().trim();
if(TextUtils.isEmpty(uname) || TextUtils.isEmpty(upass)){
Toast.makeText(this, "用户名密码不能为空!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "注册成功!", Toast.LENGTH_SHORT).show();
int resultCode = 0; // 返回码:与请求码类似,用于区分返回的结果(多条返回值时)
/*
* 准备返回的数据:Intent 是可以传递数据的
*/
Intent data = new Intent();
data.putExtra("uname", uname);
data.putExtra("upass", upass);
setResult(resultCode, data); // 返回结果
finish(); // 关闭当前 Activity:传递数据给当前 Activity 的调用者,调用者将执行 onActivityResult 方法
}
}
}
public class MainActivity extends Activity {
private EditText et_uname;
private EditText et_upass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
}
private void initViews() {
et_uname = (EditText) findViewById(R.id.et_uname);
et_upass = (EditText) findViewById(R.id.et_upass);
Intent data = getIntent(); // 获取 Intent
if(data != null){
String uname = data.getStringExtra("uname");
String upass = data.getStringExtra("upass");
et_uname.setText(uname);
et_upass.setText(upass);
}
}
/**
* 登录
* @param view
*/
public void login(View view){
String uname = et_uname.getText().toString().trim();
String upass = et_upass.getText().toString().trim();
if(TextUtils.isEmpty(uname) || TextUtils.isEmpty(upass)){
Toast.makeText(this, "用户名密码不能为空!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "登录成功!", Toast.LENGTH_SHORT).show();
}
}
/**
* 注册
* @param view
*/
public void regist(View view){
Intent intent = new Intent(this, RegistActivity.class);
startActivity(intent);
finish();
}
}public class RegistActivity extends Activity{
private EditText et_uname;
private EditText et_upass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_regist);
initViews();
}
private void initViews() {
et_uname = (EditText) findViewById(R.id.et_uname);
et_upass = (EditText) findViewById(R.id.et_upass);
}
public void regist(View view){
String uname = et_uname.getText().toString().trim();
String upass = et_upass.getText().toString().trim();
if(TextUtils.isEmpty(uname) || TextUtils.isEmpty(upass)){
Toast.makeText(this, "用户名密码不能为空!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "注册成功!", Toast.LENGTH_SHORT).show();
// 使用 Intent 保存数据
Intent data = new Intent(this, MainActivity.class);
data.putExtra("uname", uname);
data.putExtra("upass", upass);
startActivity(data);
finish();
}
}
}
版权声明:博客编写不易,转载时请注明出处,Thank you very much!
Android学习系列之(五)Activity之间的数据传递
原文地址:http://blog.csdn.net/gulu_gulu_jp/article/details/48027137