Intent意图
1、显式Intent
button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(FirstActivity.this,SecondActivity.class); startActivity(intent); } });
2、隐式Intent
指定一系列的action和category.每个intent中只能指定一个action,可以指定多个category。
在AndroidManifest中添加
<activity android:name=".SecondActivity" > <intent-filter> <action android:name="com.example.activitytest.ACTION_START"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>
调用addCategory()添加category。
隐式intent其他用法:
解析Uri
button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("http://www.baidu.com")); startActivity(intent); } });
<data>标签:用于指定当前活动相应说明类型的数据。
3、传递数据
(1)向下一个活动传递数据
FirstActivity
public void onClick(View view) { String data = "Hello World"; Intent intent = new Intent(FirstActivity.this,SecondActivity.class); intent.putExtra("extra_data",data); startActivity(intent); }
secondActivity
Intent intent = getIntent(); //获得启动secondActivity的intent String data = intent.getStringExtra("extra_data"); Log.d("SecondActivity",data);
(2)返回数据给上一个活动
FirstActivity通过startActivityForResult()方法启动SecondActivity,在SecondActivity被销毁之后会回调上一个活动的OnActivityResult()方法,所以需要在FirstActivity中重写此方法。
如果是通过back键返回FirstActivity,则重写onBackPressed()方法取得返回的数据。