Android程序开发:[18]Activity页面跳转实现
的有关信息介绍如下:![Android程序开发:[18]Activity页面跳转实现](/upload/jingyan/2025/0927/fc5de275.jpg)
Activity页面跳转实现有两种,一种是开始另一个Activity,另一种是通过setContentView来改变这个Activity显示的内容。本节通过用户注册界面来演示实现第一种跳转方式。
新建一个新的项目,名称为register。打开activity_main.xml编辑用户注册主界面,添加一个表格布局,包括TextView、EditText、CheckBox以及Button控件。完成代码如下:
////////////////////////////////////////////////////////////////////////////////
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" > android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="用户注册" /> android:layout_width="fill_parent" android:layout_height="fill_parent" > android:layout_height="wrap_content" android:gravity="center" > android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="用户名" /> android:id="@+id/userName" android:layout_weight="1" android:layout_height="wrap_content" /> android:layout_height="wrap_content" android:gravity="center"> android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="密码" /> android:id="@+id/password" android:layout_weight="1" android:layout_height="wrap_content" android:inputType="textPassword" /> android:layout_height="wrap_content" android:gravity="center"> android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="确认密码" /> android:id="@+id/repassword" android:layout_weight="1" android:layout_height="wrap_content" android:inputType="textPassword" /> android:layout_height="wrap_content" android:gravity="center" > android:id="@+id/check" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="同意条款" /> android:layout_height="wrap_content" android:gravity="center" >
打开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();
}
});
}
}
新建注册成功反馈界面布局文件,名称为result.xml,用来显示用户注册信息。该布局与主界面类似,主要是TextView和Button控件。完整代码如下:
///////////////////////////////////////////////////////////////////////////////
android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="用户注册结果" /> android:layout_width="fill_parent" android:layout_height="fill_parent" > android:layout_height="wrap_content" android:gravity="center" > android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="用户名:" /> android:id="@+id/userName" android:layout_weight="1" android:layout_height="wrap_content" /> android:layout_height="wrap_content" android:gravity="center"> android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="密码:" /> android:id="@+id/password" android:layout_weight="1" android:layout_height="wrap_content" /> android:layout_height="wrap_content" android:gravity="center" > android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="同意条款:" /> android:id="@+id/check" android:layout_weight="1" android:layout_height="wrap_content" /> android:layout_height="wrap_content" android:gravity="center" > android:id="@+id/OK" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="确 认" />
创建第二个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();
}
});
}
}
注册ResultActivity。新建的Activity都需要注册,否则运行会出错,如下图所示。打开AndroidManifest.xml文件,添加
运行程序,在注册界面输入信息,点击确定后,运行结果如下图所示。



