activity顯隱跳轉及值傳遞
阿新 • • 發佈:2018-11-16
1.1Activity跳轉
//撥打電話(隱式啟動)
public void click(View view){
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
Uri data=Uri.parse("tel:"+"110");
intent.setData(data);
startActivity(intent);
}
//開啟網頁/隱式啟動
public void click2(View view){
Intent intent = new Intent();
intent.setAction(intent.ACTION_VIEW);
Uri data = Uri.parse("http://"+"www.baidu.com");
intent.setData(data );
startActivity(intent);
}
//隱式啟動ScondActivity
public void click3(View view){
Intent intent = new Intent();
intent.setAction("a.b.c" );
Uri data = Uri.parse("hehe:"+"你好啊");
intent.setDataAndType(data, "text/text");
startActivity(intent);
}
//隱士啟動撥號器
public void click4(View view){
Intent intent = new Intent();
intent.setAction(intent.ACTION_DIAL);
Uri data=Uri.parse("tel:" +"110");
intent.setData(data);
startActivity(intent);
}
//顯示啟動ScondActivity
public void click5(View view){
Intent intent = new Intent();
intent.setClass(this, SecondActivity.class);
intent.putExtra("三國", "曹操");
startActivity(intent);
}
//顯示啟動撥號器
public void click6(View view){
//01-14 10:13:00.929: I/ActivityManager(384):
//Displayed com.android.contacts/.activities.DialtactsActivity: +388ms
Intent intent = new Intent();
intent.setClassName("com.android.contacts", "com.android.contacts.DialtactsActivity");
startActivity(intent);
}
//開啟網頁/顯式啟動
public void click7(View view){
//01-14 10:27:46.329: I/ActivityManager(384):
//Displayed com.android.browser/.BrowserActivity: +295ms
Intent intent = new Intent();
intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
startActivity(intent);
}
<manifest
<application
<activity
android:name=".SecondActivity"
android:label="我是SecondActivity"
>
<intent-filter>
<action android:name="a.b.c" />
<data android:scheme="hehe"/>
<data android:mimeType="text/text"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
1.2獲取開啟的Activity銷燬前設定的資料-startActivityForResult
1.當前類
Intent intent = new Intent(mContext, CarTypeActivity.class);
//startActivityForResult(android.content.Intent intent, int requestCode)
startActivityForResult(intent, 1);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 1:
if (resultCode == 1) {
mCarModelId = data.getExtras().getInt("carModelId");
String carModelName = data.getExtras().getString("carModelName");
mTvJoinType.setText(carModelName + "");
}
break;
default:
break;
}
}
2.CarTypeActivity類
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
CarTypeBean.DataBean dataBean = mList.get(position);
Intent intent = new Intent();
intent.putExtra("carModelId", dataBean.getId());
intent.putExtra("carModelName", dataBean.getBrand() +" "+ dataBean.getModel());
//setResult (int resultCode, Intent data)
setResult(1, intent);
finish();
}
});
2.1 隱式跳轉
- 定義:通過intent-filter中的action進行的跳轉就是隱式跳轉。
- 特定
- 如果一個Activity有多個intent-filter,那麼我們只需要匹配上一個,就可以將其啟動起來。
- 如果category為DEFAULT,那麼可以不用管。
- 如果一個intent-filter有多個category,那麼匹配一個即可。
- 如果intent-filter有多個data標籤,那麼匹配一個即可。
- 如果自定義Intent-filter,Action可以自定義,但是category必須使用系統提供的
- 如果intent-filet既有scheme又有mimeType,那麼在設定資料的時候就必須同時指定scheme和type,使用的API是intent.setDataAndType(Uri,Type);
- 一般用於不同app之間的呼叫
- 獲取資料
Intent intent = getIntent();
Uri data = intent.getData();
2.2 顯示跳轉
- 定義:通過位元組碼或者要跳轉的Activity的全類名進行跳轉。
- 顯示跳轉獲取資料
- 傳遞資料
- intent.putExtra(key,value);
- 獲取資料
- intent.getStringExtra(key); 2.
- 傳遞資料
2.3 Intent可以攜帶的資料種類
1. 8種基本資料型別和String以及他們的陣列形式
2. 實現了Parcelable(序列化物件的介面,類似Serializable)介面的物件
3. 實現了Serializable介面的物件