Android Activity活動頁面跳轉(zhuǎn)與頁面?zhèn)髦?/h1>
更新時(shí)間:2021年12月10日 10:26:12 作者:曲幽
大家好,本篇文章主要講的是Android Activity活動頁面跳轉(zhuǎn)與頁面?zhèn)髦担信d趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
概述
Android開發(fā)少不了的就是頁面之間的跳轉(zhuǎn),或者想要呼叫打開其他應(yīng)用等
Intent
Intent是Android程序中各組件之間進(jìn)行交互的一種重要方式,不僅可以指明當(dāng)前組件想要執(zhí)行的運(yùn)作,還可以在不同組件之間傳遞數(shù)據(jù)。
顯示Intent啟動
第一個參數(shù)為啟動活動的上下文
第二個參數(shù)為想要啟動的目標(biāo)活動
Intent intent = new Intent(MainActivity.this, TabHostActivity.class);
startActivity(intent);
通過這個構(gòu)造函數(shù)就可以構(gòu)建出Intent的“意圖”,且目標(biāo)明確,所以為顯示啟動
隱式Intent啟動
根據(jù) <intent-filter>
中設(shè)定的 action 和 category 來啟動,且只有<action>和<category>
中的內(nèi)容同時(shí)能夠匹配上時(shí),這個活動才能響應(yīng)。
Intent intent = new Intent("com.zqunyan.zgstudy.ACTION_START");
intent.addCategory("com.zqunyan.zgstudy.MY_CATEGORY");
startActivity(intent);
如果 <intent-filter>
中的 category
值是 android.intent.category.DEFAULT
則可以省略addCategory(),因?yàn)镈EFAULT是一種默認(rèn)的 category,在調(diào)用 startActivity() 方法的時(shí)候會自動添加到 intent 中,即
Intent intent = new Intent("com.zqunyan.zgstudy.ACTION_START");
startActivity(intent);
啟動其他程序
使用隱式 Intent,我們不僅可以啟動自己程序內(nèi)的活動,還可以啟動其他程序的活動。
網(wǎng)頁瀏覽
action指定為Intent.ACTION_VIEW
,其常量值為 android.intent.action.VIEW
然后將網(wǎng)頁地址轉(zhuǎn)換成 Uri 對象傳遞進(jìn)去
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://www.baidu.com"));
startActivity(intent);
撥號界面
action指定為 Intent.ACTION_DIAL
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);
根據(jù)包名打開軟件
借助androdi內(nèi)部的 PackageManager 來根據(jù)包名取得應(yīng)用的啟動頁面
Intent intent = getPackageManager().getLaunchIntentForPackage("com.zqunyan.zgwidget");
if(intent != null){
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
根據(jù)類名打開界面
常用于打開系統(tǒng)設(shè)置界面,用于一些快捷功能設(shè)置。借助 Component 來實(shí)現(xiàn)
如:下面實(shí)例打開華為手機(jī)的設(shè)置頁面
Intent intent = new Intent();
ComponentName componentName = new ComponentName("com.android.settings", "com.android.settings.Settings$DisplaySettingsActivity");
intent.setComponent(componentName);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
startActivityForResult
主頁面
跳轉(zhuǎn)按鈕點(diǎn)擊事件
Intent intent = new Intent(MainActivity.this, ReturnValueActivity.class);
//第二個參數(shù)用于處理返回結(jié)果是判斷是哪個語句調(diào)用的
startActivityForResult(intent, 1); //requestCode = 1
處理返回結(jié)果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent){
super.onActivityResult(requestCode, resultCode, intent);
if(requestCode == 1){
if(resultCode == 1){
String content = intent.getStringExtra("content");
lblStatus.setText("success");
}else{
lblStatus.setText("fail");
}
}
}
跳轉(zhuǎn)界面
跳轉(zhuǎn)界面?zhèn)骰胤祷刂?,并關(guān)閉界面
實(shí)例化一個空的 Intent綁定數(shù)據(jù)到 IntentsetResult() 回傳結(jié)果值和綁定了數(shù)據(jù)的 Intent關(guān)閉自身,主畫面接收返回結(jié)果
Intent intent = new Intent();
intent.putExtra("content", txtMessage.getText().toString());
//setResult第一個參數(shù)為結(jié)果碼,常用的有Activity.RESULT_OK、RESULT_CANCELED或者自定義整數(shù)型結(jié)果碼
// 第二個參數(shù)為返回值,返回值封裝在Intent中
setResult(1, intent);
finish();
頁面?zhèn)髦?/h2>
Intent.putExtra 傳值
傳值
intent.putExtra("uname", "admin");
取值
Intent intent = getIntent();
String name = intent.getStringExtra("uname")
借助 Bundle 傳值
用于在 Activity 之間傳送值或數(shù)組資料,好處是當(dāng)一個頁面跳轉(zhuǎn)多個頁面時(shí),可以共用bundle。
簡單值
打包
Bundle bundle = new Bundle();
bundle.putString("NAME", "QY");
bundle.putInt("AGE", 18);
bundle.putDouble("TALL", 175.86);
bundle.putStringArrayList("lstFilePaths", lstFilePaths);
intent.putExtras(bundle);
收包
Intent intent = this.getIntent();
Bundle bundle = intent.getExtras();
String strName = bundle.getString("NAME");
int intAge = bundle.getInt("AGE");
ArrayList<String> lstFilePaths = bundle.getStringArrayList("lstFilePaths");
StringArrayList
正常傳值都為單個實(shí)際值,如果想要傳送列表數(shù)據(jù)則一般通過構(gòu)造函數(shù)或參數(shù)傳遞,直接通過 bundle 只能傳送 StringArrayList 簡單列表類型
自定義數(shù)據(jù)類
首先將自定義的數(shù)據(jù)類序列化,即繼承 implements Serializable 接口
數(shù)據(jù)類
public class GoodsInfoModule implements Serializable {}
傳值
bundle.putSerializable("goodsInfo", goodsInfo);
取值
goodsInfo = (GoodsInfoModule) bundle.getSerializable("goodsInfo");
到此這篇關(guān)于Android Activity活動頁面跳轉(zhuǎn)與頁面?zhèn)髦档奈恼戮徒榻B到這了,更多相關(guān)Android Activity頁面跳轉(zhuǎn)與頁面?zhèn)髦祪?nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- Android startActivityForResult實(shí)例詳解
- android開發(fā)教程之startActivityForResult使用方法
- 基于android startActivityForResult的學(xué)習(xí)心得總結(jié)
- 關(guān)于Android Activity之間跳轉(zhuǎn)問題(Intent)
- Android activity實(shí)現(xiàn)延時(shí)跳轉(zhuǎn)功能
- Android Activity的跳轉(zhuǎn)與傳值詳解
- Kotlin startActivity跳轉(zhuǎn)Activity實(shí)現(xiàn)流程詳解
相關(guān)文章
-
Flutter底部導(dǎo)航欄的實(shí)現(xiàn)方式
這篇文章主要為大家詳細(xì)介紹了Flutter底部導(dǎo)航欄的實(shí)現(xiàn)方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下 2019-02-02
-
Android動畫學(xué)習(xí)筆記之補(bǔ)間動畫
這篇文章主要為大家詳細(xì)介紹了Android動畫學(xué)習(xí)筆記之補(bǔ)間動畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下 2019-12-12
-
Android編程創(chuàng)建桌面快捷方式的常用方法小結(jié)【2種方法】
這篇文章主要介紹了Android編程創(chuàng)建桌面快捷方式的常用方法,結(jié)合實(shí)例形式總結(jié)分析了2種常見的實(shí)現(xiàn)方法與相關(guān)操作技巧,需要的朋友可以參考下 2017-02-02
-
android 大圖片拖拽并縮放實(shí)現(xiàn)原理
android 大圖片拖拽縮放有利于用戶體驗(yàn),在開發(fā)過程中經(jīng)常使用到,這篇圖片拖拽縮放也是我在項(xiàng)目中用到的,今天整理一下,將源碼奉獻(xiàn)給大家,希望對大家以后碰到相似的問題有幫助 2013-01-01
最新評論
概述
Android開發(fā)少不了的就是頁面之間的跳轉(zhuǎn),或者想要呼叫打開其他應(yīng)用等
Intent
Intent是Android程序中各組件之間進(jìn)行交互的一種重要方式,不僅可以指明當(dāng)前組件想要執(zhí)行的運(yùn)作,還可以在不同組件之間傳遞數(shù)據(jù)。
顯示Intent啟動
第一個參數(shù)為啟動活動的上下文
第二個參數(shù)為想要啟動的目標(biāo)活動
Intent intent = new Intent(MainActivity.this, TabHostActivity.class); startActivity(intent);
通過這個構(gòu)造函數(shù)就可以構(gòu)建出Intent的“意圖”,且目標(biāo)明確,所以為顯示啟動
隱式Intent啟動
根據(jù) <intent-filter>
中設(shè)定的 action 和 category 來啟動,且只有<action>和<category>
中的內(nèi)容同時(shí)能夠匹配上時(shí),這個活動才能響應(yīng)。
Intent intent = new Intent("com.zqunyan.zgstudy.ACTION_START"); intent.addCategory("com.zqunyan.zgstudy.MY_CATEGORY"); startActivity(intent);
如果 <intent-filter>
中的 category
值是 android.intent.category.DEFAULT
則可以省略addCategory(),因?yàn)镈EFAULT是一種默認(rèn)的 category,在調(diào)用 startActivity() 方法的時(shí)候會自動添加到 intent 中,即
Intent intent = new Intent("com.zqunyan.zgstudy.ACTION_START"); startActivity(intent);
啟動其他程序
使用隱式 Intent,我們不僅可以啟動自己程序內(nèi)的活動,還可以啟動其他程序的活動。
網(wǎng)頁瀏覽
action指定為Intent.ACTION_VIEW
,其常量值為 android.intent.action.VIEW
然后將網(wǎng)頁地址轉(zhuǎn)換成 Uri 對象傳遞進(jìn)去
Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("https://www.baidu.com")); startActivity(intent);
撥號界面
action指定為 Intent.ACTION_DIAL
Intent intent = new Intent(Intent.ACTION_DIAL); intent.setData(Uri.parse("tel:10086")); startActivity(intent);
根據(jù)包名打開軟件
借助androdi內(nèi)部的 PackageManager 來根據(jù)包名取得應(yīng)用的啟動頁面
Intent intent = getPackageManager().getLaunchIntentForPackage("com.zqunyan.zgwidget"); if(intent != null){ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); }
根據(jù)類名打開界面
常用于打開系統(tǒng)設(shè)置界面,用于一些快捷功能設(shè)置。借助 Component 來實(shí)現(xiàn)
如:下面實(shí)例打開華為手機(jī)的設(shè)置頁面
Intent intent = new Intent(); ComponentName componentName = new ComponentName("com.android.settings", "com.android.settings.Settings$DisplaySettingsActivity"); intent.setComponent(componentName); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);
startActivityForResult
主頁面
跳轉(zhuǎn)按鈕點(diǎn)擊事件
Intent intent = new Intent(MainActivity.this, ReturnValueActivity.class); //第二個參數(shù)用于處理返回結(jié)果是判斷是哪個語句調(diào)用的 startActivityForResult(intent, 1); //requestCode = 1
處理返回結(jié)果
@Override protected void onActivityResult(int requestCode, int resultCode, Intent intent){ super.onActivityResult(requestCode, resultCode, intent); if(requestCode == 1){ if(resultCode == 1){ String content = intent.getStringExtra("content"); lblStatus.setText("success"); }else{ lblStatus.setText("fail"); } } }
跳轉(zhuǎn)界面
跳轉(zhuǎn)界面?zhèn)骰胤祷刂?,并關(guān)閉界面
實(shí)例化一個空的 Intent綁定數(shù)據(jù)到 IntentsetResult() 回傳結(jié)果值和綁定了數(shù)據(jù)的 Intent關(guān)閉自身,主畫面接收返回結(jié)果
Intent intent = new Intent(); intent.putExtra("content", txtMessage.getText().toString()); //setResult第一個參數(shù)為結(jié)果碼,常用的有Activity.RESULT_OK、RESULT_CANCELED或者自定義整數(shù)型結(jié)果碼 // 第二個參數(shù)為返回值,返回值封裝在Intent中 setResult(1, intent); finish();
頁面?zhèn)髦?/h2>
Intent.putExtra 傳值
傳值
intent.putExtra("uname", "admin");
取值
Intent intent = getIntent(); String name = intent.getStringExtra("uname")
借助 Bundle 傳值
用于在 Activity 之間傳送值或數(shù)組資料,好處是當(dāng)一個頁面跳轉(zhuǎn)多個頁面時(shí),可以共用bundle。
簡單值
打包
Bundle bundle = new Bundle(); bundle.putString("NAME", "QY"); bundle.putInt("AGE", 18); bundle.putDouble("TALL", 175.86); bundle.putStringArrayList("lstFilePaths", lstFilePaths); intent.putExtras(bundle);
收包
Intent intent = this.getIntent(); Bundle bundle = intent.getExtras(); String strName = bundle.getString("NAME"); int intAge = bundle.getInt("AGE"); ArrayList<String> lstFilePaths = bundle.getStringArrayList("lstFilePaths");
StringArrayList
正常傳值都為單個實(shí)際值,如果想要傳送列表數(shù)據(jù)則一般通過構(gòu)造函數(shù)或參數(shù)傳遞,直接通過 bundle 只能傳送 StringArrayList 簡單列表類型
自定義數(shù)據(jù)類
首先將自定義的數(shù)據(jù)類序列化,即繼承 implements Serializable 接口
數(shù)據(jù)類
public class GoodsInfoModule implements Serializable {}
傳值
bundle.putSerializable("goodsInfo", goodsInfo);
取值
goodsInfo = (GoodsInfoModule) bundle.getSerializable("goodsInfo");
到此這篇關(guān)于Android Activity活動頁面跳轉(zhuǎn)與頁面?zhèn)髦档奈恼戮徒榻B到這了,更多相關(guān)Android Activity頁面跳轉(zhuǎn)與頁面?zhèn)髦祪?nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Android startActivityForResult實(shí)例詳解
- android開發(fā)教程之startActivityForResult使用方法
- 基于android startActivityForResult的學(xué)習(xí)心得總結(jié)
- 關(guān)于Android Activity之間跳轉(zhuǎn)問題(Intent)
- Android activity實(shí)現(xiàn)延時(shí)跳轉(zhuǎn)功能
- Android Activity的跳轉(zhuǎn)與傳值詳解
- Kotlin startActivity跳轉(zhuǎn)Activity實(shí)現(xiàn)流程詳解
相關(guān)文章
Flutter底部導(dǎo)航欄的實(shí)現(xiàn)方式
這篇文章主要為大家詳細(xì)介紹了Flutter底部導(dǎo)航欄的實(shí)現(xiàn)方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02Android動畫學(xué)習(xí)筆記之補(bǔ)間動畫
這篇文章主要為大家詳細(xì)介紹了Android動畫學(xué)習(xí)筆記之補(bǔ)間動畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12Android編程創(chuàng)建桌面快捷方式的常用方法小結(jié)【2種方法】
這篇文章主要介紹了Android編程創(chuàng)建桌面快捷方式的常用方法,結(jié)合實(shí)例形式總結(jié)分析了2種常見的實(shí)現(xiàn)方法與相關(guān)操作技巧,需要的朋友可以參考下2017-02-02android 大圖片拖拽并縮放實(shí)現(xiàn)原理
android 大圖片拖拽縮放有利于用戶體驗(yàn),在開發(fā)過程中經(jīng)常使用到,這篇圖片拖拽縮放也是我在項(xiàng)目中用到的,今天整理一下,將源碼奉獻(xiàn)給大家,希望對大家以后碰到相似的問題有幫助2013-01-01