设为首页 加入收藏

TOP

activity间数据传递(一)
2017-10-16 18:18:40 】 浏览:819
Tags:activity 数据 传递

传递简单数据

创建两个activity,FirstActivity和TwoActivity,这里将会将数据从FisrtActivity传给TwoActivity。
创建完activity的目录界面如下。

现在我们先对它们的layout布局做一些调整。

1. 在activity_first.xml中添加一个按钮,这是用来作为页面跳转的触发按钮。并将原先多余的其它组件删去。添加的代码如下。
 <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btnStart"
        android:text="启动另一个activity"/>

界面显示如下

2. 在activity_two.xml中添加TextView组件,其余组件可删去,保持简洁。其代码如下。
<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tv"
        android:text="这是第二个activity"/>

界面显示如下

好了准备工作已经完成了,现在正式开始讲解啦。
首先我们的思路是在FirstActivity中先通过按钮的ID来获取Button对象,并为其添加监听事件,我们将会在这里进行activity的跳转,同时将数据添加给Intent对象,通过Intent对象来将数据传给TwoActivity。

1. FirstActivity代码如下
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class FirstActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);

        findViewById(R.id.btnStart).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i=new Intent(FirstActivity.this,TwoActivity.class);
                i.putExtra("data","hello");
                startActivity(i);
            }
        });
    }
}

这里最关键的代码是Intent.putExtra(String name,String value),这是将数据绑定到Intent对象上,当然,这个方法有许多重载,也可绑定不是String类型的数据。比如

大家可根据情况做选择。

2. TwoActivity接收数据,代码如下
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

import org.w3c.dom.Text;

public class TwoActivity extends AppCompatActivity {
    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_two);
        //获取传入的Intent
        Intent i=getIntent();
        //利用我们在XML文件中定义的View的id属性来获取相应的View对象
        tv=(TextView) findViewById(R.id.tv);
        //设置文本内容
        tv.setText(i.getStringExtra("data"));
    }
}

这里最关键的代码就是Intent.getStringExtra(String name),name是在FirstActivity中设置的绑定的数据的名字data,返回的就是需要传递的数据。好了,现在运行应用,可以跳转activity的同时也可传递数据了,来运行一下吧!

传递数据包Bundle

上面的是将数据一个个附加到Intent对象进行传递的,现在换种方式,将需要的数据进行打包,然后一起传送出去。

1. FirstActivity
        ......
        findViewById(R.id.btnStart).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i=new Intent(FirstActivity.this,TwoActivity.class);
                //i.putExtra("data","hello");
                Bundle b=new Bundle();
                b.putString("name","MrY");
                b.putInt("age",20);
                i.putExtras(b);
                startActivity(i);
            }
        });

这里创建了Bundle对象,然后调用相关的put方法将数据打包到Bundle对象上,最后只要将Bundle对象附加到Intent对象上。

2. 改变TwoActivity中代码来接收数据
        //获取传入的Intent
        Intent i=getIntent();
        Bundle data=i.getExtras();//获取Bundle对象
         //利用我们在XML文件中定义的View的id属性来获取相应的View对象
        tv=(TextView) findViewById(R.id.tv);
        //设置文本内容
       // tv.setText(i.getStringExtra("data"));
        tv.setText(String.format("name=%s,age=%d",data.getString("name"),data.getInt(&quo
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇DatePickerDialog日期对话框以及.. 下一篇童话故事 --- 蓝牙通信 --- 连接..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

最新文章

热门文章

C 语言

C++基础

windows编程基础

linux编程基础

C/C++面试题目