传递简单数据

创建两个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("age")));

关键方法是Intent.getExtras(Bundle b)返回传递过来的Bundle数据包。

来运行应用吧,看一下第二种方式是否能达到预期效果呢,答案肯定是的啦。

当然还有一种Bundle传递方法

FirstActivity中用如下方式传递

i.putExtra("data",b);

TwoActivity中相应的改变获取Bundle的方法

Bundle data=i.getBundleExtra("data");

到这里要讲解的内容已经全部完成了!

最新文章

  1. Selenium的PO模式(Page Object Model)[python版]
  2. hdu 1712, multiple-choice knapsack, 分类: hdoj 2015-07-18 13:25 152人阅读 评论(0) 收藏
  3. 2016国内最值得期待的响应式前端框架pintuer(拼图)--http://www.pintuer.com
  4. group_concat函数详解
  5. [转载]Emmet使用
  6. ytu 1985:C语言实验——保留字母(水题)
  7. 使用Java 8 API,根据传递的分隔符,连接list中所有的元素
  8. WinterCamp 2015 总结
  9. php header()跳转
  10. 团队作业4——第一次项目冲刺(Alpha版本)5th day
  11. 手把手教你做一个Shell命令窗口
  12. 微服务框架——SpringCloud(四)
  13. 刷题upupup【Java中HashMap、HashSet用法总结】
  14. 20164318 毛瀚逸 Exp4 恶意代码分析
  15. [Canvas]空战游戏进阶 增加己方子弹管理类
  16. 转://Oracle 11gR2 RAC ASM磁盘全部丢失后的恢复
  17. Linux下rsyslog日志收集服务环境部署记录
  18. uni-app - 上传图片组件
  19. Eclipse json文件报错
  20. java常用设计模式一:单例模式

热门文章

  1. scp、paramiko、rsync复制文件的区别
  2. REST API 安全设计
  3. 局部优化与整体效果 新增时间&gt;节省时间 权衡利弊
  4. javaSE基础(三)
  5. Recyclerview 顶部悬停 stick
  6. 【Beijing WC2012】 冻结
  7. flask g对象
  8. 第十四周 Leetcode 315. Count of Smaller Numbers After Self(HARD) 主席树
  9. 杂项-Java:JeePlus
  10. 卸载CentOS7-x64自带的OpenJDK的方法