Intent实现Activity的数据传递

本文介绍了Android中的Intent机制,包括其在启动Activity、服务及发送广播等方面的应用。详细解释了显式和隐式Intent的区别,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Intent简介
Intent中文翻译为“意图”,它是Android程序中各个组件进行交互的一种重要方式,它不仅可以指定当前组件要执行的动作,还可以在不同组件之间进行数据传递。
Intent一般用于启动Activity、启动服务、发送广播等,承担了Android应用程序三大核心组件相互间的通信功能。

1)Intent启动Activity的方法有:
startActivity(Intent intent)
startActivityForResult(Intent intent,int code)
2)显式意图即在通过Intent启动Activity时,需明确指定激活组件的名称。如果需要在本应用中启动其他的Activity时,可以使用显式意图来启动Activity。
Intent intent = new Intent(this, Activity02.class);
startActivity(intent);
3)隐式Activity
相对于显式Intent,隐式Intent则含蓄很多,它并不指明我们想要启动哪一个Activity,而是指定了一系列更为抽象的action和category等信息,而让系统去分析这个Intent,并帮我们找到合适的Activity去启动。

代码示例:点击按钮后,所有Action为VIEW的Activity被筛选出来,由用户进一步选择,我们自己定义的SecondActivity,将他的action设置为Action.VIEW,则它也会显示出来供用户选择。
一。

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignRight="@+id/button2"
    android:layout_below="@+id/button1"
    android:text="飞往火星" />

<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/button1"
    android:layout_marginTop="25dp"
    android:text="飞往月球" />

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/button2"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="106dp"
    android:ems="10"
    android:inputType="textPersonName"
    android:text="textPersonName" >

    <requestFocus />
</EditText>

package com.example.xpa;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {

private Button button1;


private static final int Mars=0;

@Override
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);
	// 1.将布局中的组件,转换成对象
	button1 = (Button) findViewById(R.id.button1);

	// 2.对Button定义事件处理程序,单击按钮,修改TextView的值
	button1.setOnClickListener(new OnClickListener() {

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			Intent intent=new Intent(MainActivity.this,MainActivity2.class);
			String content="地球来的消息:我是来自地球上的Tom,火星的朋友你好!";
			intent.putExtra("FromEarth", content);
			startActivityForResult(intent,Mars);					
		}
	});
}

}

2.package com.example.xpa;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity2 extends Activity {

private TextView textView1;




@Override
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main_activity2);
	textView1 = (TextView) findViewById(R.id.textView1);
	
	Intent intentt=getIntent();
	String costring=intentt.getStringExtra("FromEarth");
	textView1.setText(costring);


}

}

3.配置 AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="18" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.example.xpa.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    
    
    <activity
        android:name="com.example.xpa.MainActivity2"
        android:label="第二个Activity" >
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    
</application>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值