Android程序开发:[18]Activity页面跳转实现
1、新建一个新的项目,名称为register。打开activity_main.xml编辑用户注册主界面,添加一个表格布局,包括TextView、EditText、CheckBox以及Button控件。完成代码如下:////////////////////////////////////////////////////////////////////////////////<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.register.MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="用户注册" /> <TableLayout android:layout_width="fill_parent" android:layout_height="fill_parent" > <TableRow android:layout_height="wrap_content" android:gravity="center" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="用户名" /> <EditText android:id="@+id/userName" android:layout_weight="1" android:layout_height="wrap_content" /> </TableRow> <TableRow android:layout_height="wrap_content" android:gravity="center"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="密码" /> <EditText android:id="@+id/password" android:layout_weight="1" android:layout_height="wrap_content" android:inputType="textPassword" /> </TableRow> <TableRow android:layout_height="wrap_content" android:gravity="center"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="确认密码" /> <EditText android:id="@+id/repassword" android:layout_weight="1" android:layout_height="wrap_content" android:inputType="textPassword" /> </TableRow> <TableRow android:layout_height="wrap_content" android:gravity="center" > <CheckBox android:id="@+id/check" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="同意条款" /> </TableRow> <TableRow android:layout_height="wrap_content" android:gravity="center" > <Button android:id="@+id/register" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="注 册" /> <Button android:id="@+id/cancel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="取 消" /> </TableRow> </TableLayout> </LinearLayout>
2、打开MainActivity.java,畛粳棠奈获取注册界面控件,为CheckBox和Button控件添加事件监听。完整代码如下://///////////////////////////////////////////////////////////////////////////package com.example.register;import android.app.Activity;import android.app.AlertDialog;import android.content.Intent;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.EditText;public class MainActivity extends Activity { private boolean isChecked=false; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //设置标题 setTitle("注册"); //获取控件 final EditText username=(EditText) findViewById(R.id.userName); final EditText password=(EditText) findViewById(R.id.password); final EditText repassword=(EditText) findViewById(R.id.repassword); CheckBox check=(CheckBox)findViewById(R.id.check); Button register=(Button)findViewById(R.id.register); Button cancel=(Button)findViewById(R.id.cancel); //事件监听 check.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton arg0, boolean flag) { // TODO Auto-generated method stub isChecked=flag; } }); register.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub String strUser=username.getText().toString(); String strPwd=password.getText().toString(); String strRepwd=repassword.getText().toString(); if(strUser.equals("")){ //弹出对话框 验证是否填写用户名 new AlertDialog.Builder(MainActivity.this) .setIcon(android.R.drawable.ic_dialog_alert) .setTitle("警告") .setMessage("请输入用户名") .setPositiveButton("确定",null) .show(); return; } if(!strPwd.equals(strRepwd)){ //弹出对话框 验证密码输入是否一致 new AlertDialog.Builder(MainActivity.this) .setIcon(android.R.drawable.ic_dialog_alert) .setTitle("警告") .setMessage("两次密码输入不相同") .setPositiveButton("确定",null) .show(); return; } if(!isChecked){ //弹出对话框 验证是否同意条款 new AlertDialog.Builder(MainActivity.this) .setIcon(android.R.drawable.ic_dialog_alert) .setTitle("警告") .setMessage("请勾选同意条款") .setPositiveButton("确定",null) .show(); return; } //发送数据到另一个Activity Bundle bundle=new Bundle(); bundle.putString("username", strUser); bundle.putString("password", strPwd); bundle.putBoolean("check", isChecked); Intent intent=new Intent(MainActivity.this,ResultActivity.class); intent.putExtra("info",bundle); //启动这个Activity MainActivity.this.startActivity(intent); //结束本Activity MainActivity.this.finish(); } }); cancel.setOnClickListener(new OnClickListener(){ public void onClick(View arg0){ MainActivity.this.finish(); } }); }}
3、新建注册成功反馈界面布局文件,名称为result.xml,用来显示用户注册信息。该布局与主界面类似,主要是TextView和Button控件。完整代码如下:///////////////////////////////////////////////////////////////////////////////<?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" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="用户注册结果" /> <TableLayout android:layout_width="fill_parent" android:layout_height="fill_parent" > <TableRow android:layout_height="wrap_content" android:gravity="center" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="用户名:" /> <TextView android:id="@+id/userName" android:layout_weight="1" android:layout_height="wrap_content" /> </TableRow> <TableRow android:layout_height="wrap_content" android:gravity="center"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="密码:" /> <TextView android:id="@+id/password" android:layout_weight="1" android:layout_height="wrap_content" /> </TableRow>> <TableRow android:layout_height="wrap_content" android:gravity="center" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="同意条款:" /> <TextView android:id="@+id/check" android:layout_weight="1" android:layout_height="wrap_content" /> </TableRow> <TableRow android:layout_height="wrap_content" android:gravity="center" > <Button android:id="@+id/OK" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="确 认" /></TableRow> </TableLayout></LinearLayout>
4、创建第二个Activity用来接收注册界面提交的数据,名称为ResultActivity。完整代码如下:///////////////////////////////////////////////////////////////////////package com.example.register;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;import android.widget.CheckBox;import android.widget.EditText;import android.widget.TextView;public class ResultActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.result); //设置标题 setTitle("注册成功!"); //接收数据 Intent intent=this.getIntent(); Bundle bundle=intent.getBundleExtra("info"); String strUsername=bundle.getString("username"); String strPwd=bundle.getString("password"); String strCheck=bundle.getBoolean("check")?"是":"否"; final TextView username=(TextView) findViewById(R.id.userName); username.setText(strUsername); final TextView password=(TextView) findViewById(R.id.password); password.setText(strPwd); final TextView strcheck=(TextView) findViewById(R.id.check); strcheck.setText(strCheck); Button OkBt=(Button) findViewById(R.id.OK); OkBt.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub ResultActivity.this.finish(); } }); }}
5、注册ResultActivity。新建的Activity都需要注册,否则运行会出错,如下图所示。打开AndroidManifest.xml文件,添加<activity android:name=".ResultActivity"></activity>代码, 进行简单注册就可以了。
6、运行程序,在注册界面输入信息,点击确定后,运行结果如下图所示。