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();
}

 

posted @ 2021-02-20 22:13  步履向前  阅读(212)  评论(0)    收藏  举报