前言:前面我们已经掌握了 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