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>代码, 进行简单注册就可以了。
![Android程序开发:[18]Activity页面跳转实现](https://exp-picture.cdn.bcebos.com/0d2fe5f202b375d7463be647515872dadf49d897.jpg)
![Android程序开发:[18]Activity页面跳转实现](https://exp-picture.cdn.bcebos.com/739bc049610f8b564b4473db9ce951e10ff8d397.jpg)
6、运行程序,在注册界面输入信息,点击确定后,运行结果如下图所示。
![Android程序开发:[18]Activity页面跳转实现](https://exp-picture.cdn.bcebos.com/16a84fe10ef85856397df59753e9ccd2ba66cd97.jpg)
![Android程序开发:[18]Activity页面跳转实现](https://exp-picture.cdn.bcebos.com/cd93a56651598540e36a5951b5a23a42a17ac497.jpg)