国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

第一行安卓代碼——使用Intent在活動(dòng)之間穿梭2.3

2019-11-09 17:08:50
字體:
供稿:網(wǎng)友

只有一個(gè)活動(dòng)的安卓應(yīng)用確實(shí)太簡單了,這一節(jié)我們一起來看看如何由主活動(dòng)跳轉(zhuǎn)到其他的活動(dòng),以及活動(dòng)的返回,參數(shù)的傳遞。

在活動(dòng)之間穿梭主要有兩種方式

1、使用顯式Intent2、使用隱式Intent

2.3.1顯示Intent的實(shí)現(xiàn)

button1.setOnclickListenter(new View.OnclickListener() { @Override public void onClick(View v) { Intent intent = new Intent(FirstActivity.this, SecondActivity.class); } startActivity(intent);});

點(diǎn)擊按鈕1之后由FirstActivity跳轉(zhuǎn)到SecondActivity,代碼非常簡單

2.3.2隱式Intent的實(shí)現(xiàn)

我們新建項(xiàng)目之后打開AndroidManifest.xml,發(fā)現(xiàn)主活動(dòng)的代碼是這樣的

<activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>

新建一個(gè)SecondActivity,它在xml文件中的代碼如下

<activity android:name=".SecondActivity"></activity>

與主活動(dòng)相比缺了【intent-filter】標(biāo)簽 【intent-filter】的字面意思就是【Intent過濾器】 所以我們可以給SecondActivity添加“過濾器”,讓別的活動(dòng)可以找到它。

<activity android:name=".SecondActivity"> <intent-filter> <action android:name="com.example.activitytest.ACTION_START"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>

先給出一個(gè)代碼實(shí)例

button1.setOnclickListenter(new View.OnclickListener() { @Override public void onClick(View v) { Intent intent = new Intent("com.example.activitytest.ACTION_START"); } startActivity(intent);});

只有【action】和【categery】中的內(nèi)容同時(shí)匹配上Intent中指定的action和category時(shí),這個(gè)活動(dòng)才能相應(yīng)Intent。但上面這個(gè)例子沒有寫【category】,這是因?yàn)椤綾ategory android:name=”android.intent.category.DEFAULT”/】是一種默認(rèn)的category。

xml修改如下

<activity android:name=".SecondActivity"> <intent-filter> <action android:name="com.example.activitytest.ACTION_START"/> <category android:name="com.example.activitytest.MY_CATEGORY"/> </intent-filter> </activity>

代碼如下

button1.setOnclickListenter(new View.OnclickListener() { @Override public void onClick(View v) { Intent intent = new Intent("com.example.activitytest.ACTION_START"); } intent.addCategory("com.example.activitytest.MY_CATEGORY"); startActivity(intent);});

2.3.3隱式Intent的其它用法。

比如通過【action】打開網(wǎng)頁

button1.setOnclickListenter(new View.OnclickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("http://www.baidu.com")); startActivity(intent);});

同時(shí),我們還可以在【intent-filter】標(biāo)簽中再配置一個(gè)【data】標(biāo)簽,用于更精確的指定當(dāng)前活動(dòng)能夠相應(yīng)什么類型的數(shù)據(jù)。 【data】標(biāo)簽中主要有以下配置內(nèi)容

android:scheme ; 用于指定數(shù)據(jù)的協(xié)議部分,如上例的http部分android:host ; 用于指定數(shù)據(jù)的主機(jī)名部分, 如上例的www.baidu.comandroid:port ; 用于指定數(shù)據(jù)的端口部分,一般緊跟在主機(jī)名之后,上例中是默認(rèn)的80端口android:path; 用于指定主機(jī)名和端口之后的東西android:mimeType; 用戶指定可以處理的數(shù)據(jù)類型,可以通過通配符來實(shí)現(xiàn)

具體的使用可以自己嘗試一下。

2.3.4 向下一個(gè)活動(dòng)傳遞數(shù)據(jù)

代碼如下 在FirstActivity中

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);intent.putExtra("extra_data", "hello, sir");

在SecondActivity中

Intent intent = getIntent();String data = intent.getStringExtra("extra_data");

2.3.5 返回?cái)?shù)據(jù)給上一個(gè)活動(dòng)

在FirstActivity中代碼

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);startActivityForResult(intent, 1);

startActivityForResult方法中的1是傳過去的請(qǐng)求碼,唯一即可。

在SecondActivity中代碼

Intent intent = new Intent();intent.putExtra("data_return", "Hello, FirstActivity");setResult(RESULT_OK, intent);finish();

同時(shí)我們需要在FirstAcitivity中重寫 onActivityResult方法接受返回的數(shù)據(jù)。

@Override PRotected void onActivityResult(int requestCode, int resultCode, Intent data) { switch(requestCode) { if(resultCode == RESULT_OK) { String returndata = data.getStringExtra("return_data"); } } }

什么時(shí)候返回呢?可以自定義按鈕,點(diǎn)擊按鈕事件后返回。那安卓手機(jī)都會(huì)帶有返回鍵,如果用戶是通過返回鍵返回的怎么辦呢? 重寫onBackPressed方法就ok了。

@Override public void onBackPressed() { Intent intent = new Intent(); intent.putExtra("data_return", "Hello, FirstActivity"); setResult(RESULT_OK, intent); finish(); }
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 连云港市| 高州市| 新晃| 东乌珠穆沁旗| 汉阴县| 中方县| 杭锦后旗| 若羌县| 安多县| 清丰县| 阿克苏市| 水富县| 泰和县| 德惠市| 安西县| 富源县| 宁安市| 沙田区| 冕宁县| 海门市| 特克斯县| 郑州市| 札达县| 乐清市| 锦屏县| 湖北省| 宜章县| 永寿县| 彭阳县| 望江县| 南昌市| 旬邑县| 巩留县| 三原县| 汝南县| 隆林| 忻州市| 宿州市| 南召县| 三亚市| 梅州市|