(黑马程序员)intent用法

</pre>  intent 在组件之间起信息传递的作用,intent分为显式意图和隐式意图。显式意图相应简单好理解。<p></p><p>  显式意图 及 两个Activity之间通过intent传递数据的方法:</p><p> 1.两个Activity之间传递简单的数据类型,示例:</p><p>MainActivity:</p><p></p><pre name="code" class="java">public class MainActivity extends Activity implements OnClickListener {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);      
        Button button =(Button) findViewById(R.id.bt_par);
        button.setOnClickListener(this);
        
    }

	public void onClick(View v) {
	 switch (v.getId()) {
		case R.id.bt_par:		
	            Intent intent = new Intent(this,ResultActivity.class);
                    intent.putExtra("name", "张三");
		    startActivity(intent);		
		 break;
		}
		
	}
}

ResultActivity:

public class ResultActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.result);
	        Intent	intent = getIntent();
	        String name = intent.getStringExtra("name");
		TextView view = (TextView) findViewById(R.id.textView1);
		view.setText("名字:"+name);
	}
}


这里把第一个Activity的String 类型的名字传递到第二个页面。这里还可以传递很多其他基础类型数据。比如int,boolean等类型的数据。

2.如果需要通过intent传递对象则需要相应的javabean实现序列化。实现Serializable或者Parcelable接口。下面的例子演示实现Serializable接口。

首先创建一个实体类Student

public class Student implements Serializable{
	private static final long serialVersionUID = 1L;
	private String name;
	private String sex;
	private int age;	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}

}


隐式意图:没有明确指定那个组件来接收该意图,系统将会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。示例:

MainActivity中点击事件中代码如下:

	public void onClick(View v) {
	 switch (v.getId()) {
		case R.id.bt:		
			Intent intent = new Intent();
			intent.setAction("com.blackclouds.www");
                        Student student = new  Student();
                        student.setName("张三");
                        student.setSex("男");
                        student.setAge(20);
                        intent.putExtra("STU", student);
		       startActivity(intent);		
		 break;
		}	
	}
接收的Activity在清单文件AndroidManifest.xml中的配置如下:

        <activity
            android:name=".ResultActivity"
            android:label="第二个activity" >
            <intent-filter>
                <action android:name="com.blackclouds.www" /> 
                  <!-- 默认的category必须要配置-->  
               <category android:name="android.intent.category.DEFAULT"/>
             <!-- 这里还可以配置相应的  数据和类型 -->        
            </intent-filter>
        </activity>

运行结果:
隐式意图比显式意图的效率低,因为他要从系统中去找匹配的相关组件。

应用场景,在同一个应用中,使用显式意图。如果在不同的应用中,激活别人的应用,使用隐式意图。








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值