上一篇博文介绍了Activity的创建以及生命周期,接下来我为大家介绍在一个应用程序内2种常见的界面跳转方法


1:startActivity()方法

(1):在布局界面中创建一个布局,让用户填入账号密码,然后点击按钮提交,如下图

181148558.jpg

(2):我们学java的都知道万事万物皆对象,所以能传递对象数据就基本什么数据都能传。这里我就写个person类封装用户填入的数据,代码如下(这里注意不要吧person写成内部类,因为2个界面都需要用到这个类,还有如果以对象传递数据话类必须实现序列化接口,这里为了方便大家看代码就不将成员变量定义为私有)

public class Person implements Serializable{
                                                                                                                                                                                       
    private static final long serialVersionUID = 1L;
    String mUsername;
    String mPassword;
    public Person(String mUsername, String mPassword) {
        super();
        this.mUsername = mUsername;
        this.mPassword = mPassword;
    }
}

(3):创建一个新的activity,布局里面放置一个文本控件用来显示传递过来的用户信息,如何正确创建新的Activity上一篇博文有介绍。

(4):在MainActivity的onCreate初始化控件对象,然后再监听方法中写入界面跳转代码,代码如下

@Override
public void onClick(View v) {
    //创建一个用来传递数据intent对象
    Intent intent = new Intent();
    //调用setclass方法,第一个参数为当前Activity类自身引用,第二个为跳转的Activity
    intent.setClass(this, SecondActivity.class);
    //获取文本编辑框中用户输入的信息
    String username = mEditText1.getText().toString();
    String password = mEditText2.getText().toString();
    //创建一个封装类Person来封装数据
    Person p = new Person(username, password);
    //调用putExtra方法,第一个参数为此对象的键,第二个为此对象的值
    intent.putExtra("person", p);
    //启动界面跳转
    startActivity(intent );
}

(5);在第二个界面代码中获取调用getintent获取信息,并将获取信息的值显示在界面上,代码如下

TextView textView = (TextView) findViewById(R.id.textView1);
//获取传递过来的intent对象
Intent intent = getIntent();
//调用intentgetSerializableExtra()方法获取person对象
Person p = (Person) intent.getSerializableExtra("person");
//将person封装的数据显示到文本上
textView.setText("您的姓名是:"+p.mUsername+",您的密码是:"+p.mPassword);

这样就完成的数据传递和界面跳转,以下是显示效果图

185936270.jpg

点击提交后如下图

190034386.jpg

等会我会把完整代码上传到我的上传,大家如果有需要的话可以去下载,下次我为大家介绍常用的第二种界面跳转形式