江苏中小企业建站价格/全网营销与seo
在Android中,两个Acitivity之间是靠Intent传递信息的,因为Intent本来就起到信使的作用,所以用它来传递数据也显得顺理成章了.
Intent 提供了多个方法来"携带"额外的数据
putExtras(Bundle data): 向Intent中放入需要"携带"的数据
putXxx(String key,Xxx date):向Bundle放入Int,Long等各种类型的数据(Xxx指代各种数据类型的名称)
putSerializable(String key,Serializable date):向Bundle中放入一个可序列化的对象.
当然Intent也提供了相应的取出"携带"数据的方法
getXxx(String key):从Bundle取出Int,Long 等各种数据类型的数据.
getSerializable(String Key,Serializable data): 从Bundle取出一个可序列化的对象.
下面以使用getSerializable为例,定义一个可序列化的Person类,模拟一个用户注册的过程,通过注册那个窗口(Acitivity)传递注册信息到另一个窗口
下面是定义的一个DTO类Person用来记录注册的信息,注意!要定义成可序列化的类,继承Serializable
package WangLi.Activity.Bundle;import java.io.Serializable;public class Person implements Serializable {private String _Name;private String _Passwd;private String _Gender;public String getName(){return _Name;}public String getPass(){return _Passwd;}public String getGender(){return _Gender;}public Person(String Name,String Passwd,String Gender){this._Name = Name;this._Passwd = Passwd;this._Gender = Gender;}
}
第一个Activity界面如图
填入注册信息后,点"注册"后跳到新窗口,显示刚刚输入的信息
下面是注册窗口,界面xml 和代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><TableLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content" ><TextView android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="请输入您的注册信息"android:textSize="20sp"/><TableRow><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="用户名:"android:textSize="16sp"/><EditTextandroid:id="@+id/name"android:layout_width="fill_parent"android:layout_height="wrap_content"android:hint="请填写想注册的账号"android:selectAllOnFocus="true"/></TableRow><TableRow><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="密码:"android:textSize="16sp"/><EditTextandroid:id="@+id/passwd"android:layout_width="fill_parent"android:layout_height="wrap_content"android:password = "true"android:selectAllOnFocus="true"/></TableRow><TableRow><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="性别"android:textSize="16sp"/><RadioGroupandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"><RadioButton android:id="@+id/male"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="男"android:textSize="16sp"/><RadioButton android:id="@+id/female"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="女"android:textSize="16sp"/></RadioGroup></TableRow><TableRow><Buttonandroid:id="@+id/bn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text='注册'android:textSize="16sp"/></TableRow></TableLayout></LinearLayout>
package WangLi.Activity.Bundle;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.EditText;
import android.widget.RadioButton;public class BundleTest extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);Button bn = (Button)findViewById(R.id.bn);bn.setOnClickListener(new OnClickListener(){public void onClick(View v){EditText name = (EditText)findViewById(R.id.name);EditText passwd = (EditText)findViewById(R.id.passwd);RadioButton male = (RadioButton)findViewById(R.id.male);String gender = male.isChecked() ? "男" : "女";Person p = new Person(name.getText().toString(),passwd.getText().toString(),gender);//创建Bundle对象Bundle data = new Bundle();data.putSerializable("person", p);//创建一个IntentIntent intent = new Intent(BundleTest.this,ResultActivity.class);intent.putExtras(data);//启动intent对应的ActivitystartActivity(intent);}});}
}
下面是第接受信息窗口在接受到注册信息以后的样子
第二个接受信息窗口界面xml 及代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><TableLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content" ><TextView android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="请输入您的注册信息"android:textSize="20sp"/><TableRow><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="用户名:"android:textSize="16sp"/><EditTextandroid:id="@+id/name"android:layout_width="fill_parent"android:layout_height="wrap_content"android:hint="请填写想注册的账号"android:selectAllOnFocus="true"/></TableRow><TableRow><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="密码:"android:textSize="16sp"/><EditTextandroid:id="@+id/passwd"android:layout_width="fill_parent"android:layout_height="wrap_content"android:password = "true"android:selectAllOnFocus="true"/></TableRow><TableRow><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="性别"android:textSize="16sp"/><RadioGroupandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"><RadioButton android:id="@+id/male"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="男"android:textSize="16sp"/><RadioButton android:id="@+id/female"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="女"android:textSize="16sp"/></RadioGroup></TableRow><TableRow><Buttonandroid:id="@+id/bn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text='注册'android:textSize="16sp"/></TableRow></TableLayout></LinearLayout>
package WangLi.Activity.Bundle;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;public class ResultActivity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.result);TextView name = (TextView)findViewById(R.id.name);TextView passwd = (TextView)findViewById(R.id.passwd);TextView gender = (TextView)findViewById(R.id.gender);//获取启动该Result的IntentIntent intent = getIntent();//获取该intent所携带的数据Bundle data = intent.getExtras();//从Bundle包中取出数据Person p = (Person)data.getSerializable("person");name.setText("用户名:"+p.getName());passwd.setText("密码:"+p.getPass());gender.setText("性别:"+p.getGender());}
}
当然,最后也别忘了把所有Activity都加入AndroidManifest.xml中