要求:利用显式启动Activity的方式,实现单向数据传递,并显示详细信息
项目界面:添加用户名,密码,在另一页面显示用户名。
第1步、创建项目
新建一个Android工程命名为chapter14
第2步、添加布局文件
修改activity_main.xml布局文件(这里增加了四个TextView,四个EditView,一个按钮),如下
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户名" />
<EditText
android:id="@+id/user"
android:minWidth="200dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密码:" />
<EditText
android:id="@+id/pwd"
android:minWidth="200dp"
android:inputType="textPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="确认密码:" />
<EditText
android:id="@+id/repwd"
android:minWidth="200dp"
android:inputType="textPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="E-mail地址" />
<EditText
android:id="@+id/email"
android:minWidth="400dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="提交" />
</LinearLayout>
新建register.xml布局文件(这里增加了三个TextView),这个页面是用来显示添加的用户名,如下图:
<?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:id="@+id/user_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户名:" />
<TextView
android:id="@+id/pwd_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密码:" />
<TextView
android:id="@+id/email_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="E-mail:" />
</LinearLayout>
第3步、创建Activity
修改MainActivity.java,并且新建一个RegisterActivity.java,代码分别如下:
MainActivity.java代码:
作用:获得页面输入的内容,存并跳转到RegisterActivity.java。
package com.example.chapter14;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button submit=(Button)findViewById(R.id.submit);
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String user=((EditText)findViewById(R.id.user)).getText().toString();
String pwd=((EditText)findViewById(R.id.pwd)).getText().toString();
String repwd=((EditText)findViewById(R.id.repwd)).getText().toString();
String email=((EditText)findViewById(R.id.email)).getText().toString();
if(!"".equals(user)&&!"".equals(pwd)&&!"".equals(email)){
if(!pwd.equals(repwd)){
Toast.makeText(MainActivity.this, "两次输入密码不一致,重新输入!", Toast.LENGTH_LONG);
((EditText)findViewById(R.id.pwd)).setText("");
((EditText)findViewById(R.id.repwd)).setText("");
((EditText)findViewById(R.id.email)).requestFocus();
}else{
Intent intent=new Intent(MainActivity.this,RegisterActivity.class);
Bundle bundle=new Bundle();
bundle.putCharSequence("user", user);
bundle.putCharSequence("pwd",pwd);
bundle.putCharSequence("email",email);
intent.putExtras(bundle);
startActivity(intent);
}
}else{
Toast.makeText(MainActivity.this, "请将注册信息输入完整", Toast.LENGTH_LONG).show();
}
}
});
}
RegisterActivity.java代码:
作用:从Intent中获得需要显示name的值,并给TextView赋值。
package com.example.chapter14;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
public class RegisterActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.register);
//设置该Activity中要显示的
Intent intent = getIntent();
//获取Intent对象
Bundle bundle = intent.getExtras();
//获取传递的数据包
TextView user = (TextView) findViewById(R.id.user_1);
user.setText("用户名:" + bundle.getString("user"));
//获取用户名
TextView pwd = (TextView) findViewById(R.id.pwd_1);
pwd.setText("密码:" + bundle.getString("pwd"));
//获取密码
TextView email = (TextView) findViewById(R.id.email_1);
email.setText("E-mail: " + bundle.getString("email"));
}
}
第4步、修改AndroidManifest.xml文件
比较重要的一步啦,修改AndroidManifest.xml文件(将新增的RegisterActivity.java) 注册一下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.chapter14"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="19" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name">
<activity
android:label="填写注册信息"
android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:label="显示用户注册信息"
android:icon="@drawable/ic_launcher"
android:name=".RegisterActivity">
</activity>
</application>
</manifest>
运行结果: