博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android_Intent对象初步(Activity传统的价值观念)
阅读量:6177 次
发布时间:2019-06-21

本文共 3921 字,大约阅读时间需要 13 分钟。

说明:初步Intent物。主要使用Intent对象在Activity之间传递数据的方法。

样例:由MainActivity→OtherActivity的跳转过程中,把数据传递给OtherActivity并显示出来。

在讲步骤之前,先来看看Intent到底是个什么东西先。

Intent对象的基本概念:

1、Intent对象是Android应用程序组件之中的一个;

2、Intent对象在Android系统其中表示一种意图;

3、Intent其中最重要的内容是action和data。

(还有Component name、Category、Extras、Flags。)

步骤:1.在MainActivity里面生成一个Intent对象,在Intent对象里面使用putExtra()系列方法,把数据放到Intent对象其中去。

activity_main.xml里面放置一个Button,点击跳转到OtherActivity。

然后生成Intent,使用putExtra()向Intent对象其中存储数据。
package com.away.b_04_intent;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity {    private Button button;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                button=(Button)findViewById(R.id.btnId);        button.setOnClickListener(new ButtonListener());    }    class ButtonListener implements OnClickListener{		@Override		public void onClick(View v) {			Intent intent = new Intent();			intent.setClass(MainActivity.this, OtherActivity.class);						intent.putExtra("com.away.b_04_intent.Age", 21);			intent.putExtra("com.away.b_04_intent.Name", "Chay");			startActivity(intent);            //startActivity(new Intent(MainActivity.this, OtherActivity.class).putExtra("name","Chay").put....);		}    }}
2.在OtherActivity里面使用get
XXXExtra()系列方法从Intent对象其中取出数据。

package com.away.b_04_intent;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.widget.TextView;public class OtherActivity extends Activity {	private TextView textView;	@Override	protected void onCreate(Bundle savedInstanceState) {		// TODO Auto-generated method stub		super.onCreate(savedInstanceState);		setContentView(R.layout.other);		Intent intent = getIntent();		int age = intent.getIntExtra("com.away.b_04_intent.Age", 10);		String name = intent.getStringExtra("com.away.b_04_intent.Name");		textView = (TextView) findViewById(R.id.textView);		textView.setText(name + ":" + age + "");	}}

效果图:

上面是传递的数据是比較少的,假设数据比較多。就须要使用Bundle类了,代码例如以下:

MainActivity:

Intent intent = new Intent(MainActivity.this, OtherActivity.class);  /* 通过Bundle对象存储须要传递的数据 */  Bundle bundle = new Bundle();  /*字符、字符串、布尔、字节数组、浮点数等等。都能够传*/  bundle.putString("Name", "Away");  bundle.putBoolean("Ismale", true);    /*把bundle对象assign给Intent*/  intent.putExtras(bundle);  //intent.putExtra("bundle", bundle);startActivity(intent); 
 OtherActivity: 
public void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      /*载入页面*/      setContentView(R.layout.other);            /*获取Intent中的Bundle对象*/      Bundle bundle = this.getIntent().getExtras();  //  Bundle bundle = getIntent().getBundleExtra("bundle");    /*获取Bundle中的数据,注意类型和key*/      String name = bundle.getString("Name");      boolean ismale = bundle.getBoolean("Ismale");  }
 

-----------------------------------------------割-----------------------------------------------

ps:有时。在页面跳转之后,须要返回到之前的页面,同一时候要保留用户之前输入的信息。这个时候该怎么办呢?

在页面跳转后,前一个Activity已经被destroy了。假设要返回并显示数据。就必须将前一个Activity再次唤醒,同一时候调用某个方法来获取并显示数据。

要实现这个效果,须要做下面几步:

1. 首先。从A页面跳转到B页面时。不能够使用“startActivity()”方法。而要使用“startActivityForResult()”方法。

2. 在A页面的Activity中,须要重写“onActivityResult()”方法

@Overrideprotected void onActivityResult(int requestCode,int resultCode,Intent data){  switch(requestCode){      case RESULT_OK:      /*取得来自B页面的数据,并显示到画面*/      Bundle bundle = data.getExtras();      /*获取Bundle中的数据,注意类型和key*/      String name = bundle.getString("Name");      boolean ismale = bundle.getBoolean("Ismale");  }}
3. 在B页面上加一个返回button,并在事件写例如以下代码:

/*给上一个Activity返回结果*/B.this.setResult(RESULT_OK,intent);/*结束本Activity*/B.this.finish();

比如。选择日期,然后返回。

欢迎交流 http://blog.csdn.net/ycwol/article/details/39859341

版权声明:本文博主原创文章,博客,未经同意不得转载。

你可能感兴趣的文章
在linux虚机中装vmtools
查看>>
WCF技术剖析之十三:序列化过程中的已知类型(Known Type)
查看>>
linux设备驱动程序--类class的实现
查看>>
中国云计算应用进入集中爆发期
查看>>
算法精解---计数排序
查看>>
DockOne微信分享(一二八):容器如何监控?
查看>>
谈谈分布式事务(Distributed Transaction)[共5篇]
查看>>
如何确保快递“最后一公里” ,亚马逊打算送到你的汽车后备箱
查看>>
Gartner:财务应用迁移到云 速度超出预期
查看>>
阿里云向物流业渗透 货运司机受益
查看>>
灾难恢复的人为因素:经理们应该做的10件事情
查看>>
中国教育行业可能到了最不平凡的10年:要么创新,要么死亡
查看>>
学习Docker的User Namespace
查看>>
Symantec Backup Exec 2012 Agent for Linux 卸载
查看>>
用EJB进行事务管理
查看>>
Linux Shell脚本系列之一
查看>>
数据可视化,个人经验总结(Echarts相关)
查看>>
Mysql MAC installation
查看>>
一款基于Vue和Go的桌面端管理star项目应用
查看>>
使用shell创建一个简单的菜单bash select用法
查看>>