Intent的使用(1)——用于启动活动
Intent的使用(1)——用于启动活动
1.显式Intent
Intent intent = new Intent(A,B);
startActivity(intent);
注:Intent后有两个值,A是上下文(原页面),B是想要启动的活动。
2.隐式Intent
(1)在AndroidManifest.xml中添加:(在对应的活动下)
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
注:action指明响应哪个action,category包含附加条件
两者都能匹配时,才能响应Intent。
(2)在主函数中,使用Intent的另一种构造函数:
Intent intent = new Intent{"com.example.activitytest.ACTION_START"}; (大括号内为action)
intent.addCategory(""); (此处添加Category)
注:若Category为android.intent.category.DEFAULT,则可省略。
(3)启动其他程序
3.向下一个活动传递数据
在启动时加入: intent.putExtra(A,B);
A是键,用于后面取值 (例:“extra——data”) B是要传递的数据
在后一个活动中获取: String xxxx = intent.getStringExtra("C") C:即上方的A。
4.返回数据给上一个活动
(1)在前一活动处
Intent intent = new Intent(A, B);
startActivityForREsult(C,D);
C为intent,D为请求码(唯一值即可,常填1)
(2)在后一个活动处
public void onClick(View v){ Intent intent = new Intent(); intent.putExtra("data_return", "Hello FirstActivity"); setResult(RESULT_OK, intent); finish(); }
注:setResult(A,B) A为向上一个活动返回数据,使用:RESULT_OK或RESULT_CANCELED B是将带有数据的intent传回去。
(3)在前一处重写方法得到返回的数据
@Override protected void onActivityResult(int A, int B, Intent C) { switch (B) { case 1: if (resultCode == RESULT_OK) { String returnedData = data.getStringExtra("data_return"); Log.d("FirstActivity", returnedData); } break; default: } }
注:A为启动时的请求码,B为返回时传入的数据,C为带有数据的Intent。 通常情况:(int requestCode, int resultCode, Intent data)
(4)若使用back返回,不点击按钮返回,则在后活动处重写onBackPressed()
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("data_return", "Hello FirstActivity");
setResult(RESULT_OK, intent);
finish();
}
浙公网安备 33010602011771号