亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android開(kāi)發(fā)中Activity創(chuàng)建跳轉(zhuǎn)及傳值的方法

 更新時(shí)間:2016年05月23日 10:43:41   作者:青玉伏案  
這篇文章主要介紹了Android開(kāi)發(fā)中Activity創(chuàng)建跳轉(zhuǎn)及傳值的方法的相關(guān)資料,需要的朋友可以參考下

在Android系統(tǒng)的江湖中有四大組件:活動(dòng)(Activity), 服務(wù)(Service), 廣播接收器(Broadcast Reciver)和內(nèi)容提供者(Content Provider)。

今天所介紹的就是Android開(kāi)發(fā)中的四大組件之一:Activity,其他那三大組件以后再進(jìn)行介紹。說(shuō)道Android中的Activity,如果你做過(guò)iOS開(kāi)發(fā)的話,Activity類似于iOS中的ViewController(視圖控制器)。在應(yīng)用中能看到的東西都是放在活動(dòng)中的?;顒?dòng)是安卓開(kāi)發(fā)比較重要的東西,是用戶交互和數(shù)據(jù)的入口。本篇博客要介紹的內(nèi)容是活動(dòng)的創(chuàng)建,活動(dòng)的跳轉(zhuǎn)與值的透?jìng)鳌?br />

iOS中的ViewController也是有自己的生命周期的,了解Activity或者ViewController的生命周期是很有必要的,這要你才能搞明白在什么時(shí)間做什么事情。好廢話少說(shuō),Activity將要登場(chǎng)。

使用Android Studio創(chuàng)建一個(gè)Android的Add New Activity工程(步驟略,詳見(jiàn)上篇博客),在這個(gè)工程中默認(rèn)會(huì)有一個(gè)Blank Activity,而且在Blank Activity中自動(dòng)添加了一個(gè)Text View, 上面寫著"Hello World", 運(yùn)行這個(gè)工程就會(huì)看到Hello World在一個(gè)白色的活動(dòng)中。

我們把這個(gè)工程中創(chuàng)建的一個(gè)新的Activity,然后再有Hello World中添加一個(gè)按鈕,點(diǎn)擊按鈕跳轉(zhuǎn)到我們創(chuàng)建的新的Activity中。在新的按鈕中點(diǎn)擊Back返回到上一個(gè)Activity中。

一、Activity的創(chuàng)建與組件添加 

1.創(chuàng)建一個(gè)Blank Activity

在Android Studio的文件資源目錄中,選中你要?jiǎng)?chuàng)建Activity的包,右鍵單擊->New -> Activity ->各種Activity, 在這兒我們選擇Blank Activity,點(diǎn)擊即可,操作如下圖所示?! ?/p>

  

點(diǎn)擊完后出現(xiàn)下面的對(duì)話框來(lái)新建一個(gè)Activity,也就是我們自定義的Activity。Activity Name: 活動(dòng)的名字,Layout Name: 活動(dòng)對(duì)應(yīng)布局文件的名字,Titile: 上面導(dǎo)航條顯示的名字。Menu Resource Name: 菜單的xml配置文件的名稱(稍后會(huì)詳細(xì)介紹),點(diǎn)擊Finishi即可。

活動(dòng)創(chuàng)建后會(huì)在資源目錄中生成三個(gè)文件,如下圖所示,java中的SecondActivity文件有前面的"C"標(biāo)志可知,是Java的Class文件,也就是Activity對(duì)應(yīng)的源文件。而Layout文件中的activity_second.xml是Activity對(duì)應(yīng)的布局文件,在布局文件中你可以指定給Activity添加那些控件,并且可以控制這些控件的樣式和位置。第三個(gè)就是menu下的menu_second.xml文件,該文件是定義導(dǎo)航中的下拉菜單內(nèi)容的,稍后給大家演示。

2. 控件添加

往Activity中添加控件就需要操作我們的Layout文件夾下Activity所對(duì)應(yīng)的xml文件了。接下來(lái)要做的事情是在MainActivity中的布局文件中添加一個(gè)按鈕,然后在代碼中獲取一個(gè)按鈕,并且監(jiān)聽(tīng)按鈕的點(diǎn)擊事件,按鈕點(diǎn)擊事件觸發(fā)后彈出一個(gè)提示框。詳細(xì)的看一下如何去添加控件并監(jiān)聽(tīng)控件的事件。

(1) 添加按鈕

打開(kāi)activity_main.xml布局文件, 切換到Design模式下,在Design模式下你可以以拖拽的方式來(lái)創(chuàng)建控件,以及定位控件。下方是添加了一個(gè)Button, 并且Button上的Text為ShowToast(Toast是安卓中顯示信息用的組件)。

你也可以切換到Text模式下去看xml的文本,下面的大框中就是我們剛才拖拽出來(lái)的Button所對(duì)應(yīng)的xml的內(nèi)容,其中包括與布局有關(guān)的信息:控件的寬高,上下左右的邊距等,還有控件的一些屬性:控件獨(dú)有的id以及控件顯示的文本(Text)等。當(dāng)然如果對(duì)xml布局的屬性較為了解,就可以使用純代碼去聲明和布局你的控件。

(2)在代碼中獲取控件

經(jīng)過(guò)上面的步驟,已經(jīng)聲明并配置好了一個(gè)button。如果想再代碼中進(jìn)行控件的使用,首先得通過(guò)上面button的id來(lái)實(shí)例化控件。下面的代碼是在MainActivity文件中的onCreat()方法中添加的,關(guān)于onCreate方法,稍后的Activity的生命周期會(huì)詳細(xì)的介紹到。在Java源碼中可以通過(guò)findViewById來(lái)實(shí)例化Layout布局文件中指定的控件。上面button的id為“myFirstButton”,所以實(shí)例化該button的方法如下:

//獲取界面上的按鈕
Button myFirstButton = (Button) findViewById(R.id.myFirstButton); 

實(shí)例化Button后我們需要監(jiān)聽(tīng)按鈕的點(diǎn)擊事件,下面使用的監(jiān)聽(tīng)方式類似iOS中的Block回調(diào)。就是給button賦一個(gè)點(diǎn)擊按鈕執(zhí)行的方法。點(diǎn)擊按鈕就會(huì)執(zhí)行下方的回調(diào)方法,并且可以通過(guò)Toast進(jìn)行內(nèi)容提示。

//按鈕點(diǎn)擊的回調(diào)
myFirstButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "點(diǎn)擊MyFirstButton", Toast.LENGTH_LONG).show();
}
}); 

經(jīng)過(guò)上面的步驟,點(diǎn)擊ShowToast按鈕就會(huì)提示“點(diǎn)擊MyFirstButton”的內(nèi)容,下方是執(zhí)行的結(jié)果截圖:

二、Activity間的跳轉(zhuǎn)與傳值

在上面我們創(chuàng)建了一個(gè)名為SecondActivity的Blank Activity一直沒(méi)有,從上面的運(yùn)行效果可以看出在MainActivity中有一個(gè)Go Second Activity的Button, 她就是用來(lái)跳轉(zhuǎn)到SecondActivity的,不同Activity見(jiàn)跳轉(zhuǎn)可以傳值,也可以在返回的時(shí)候返回值,接下來(lái)就介紹Activity間的跳轉(zhuǎn)和傳值問(wèn)題。

1. 使用Intent進(jìn)行Activity的跳轉(zhuǎn)

Intent在Android開(kāi)發(fā)中被譽(yù)為“意圖”,從字面意思不難理解,就是“你打算去哪”。Intent與iOS開(kāi)發(fā)中的NavigationController(導(dǎo)航控制器)極為相似,不過(guò)又有所不同。NavigationController是一個(gè)“?!毙问降娜萜鳎刂破骺梢酝ㄟ^(guò)push或者pop操作進(jìn)行"入棧"和"出棧",這個(gè)入棧和出棧的操作也就是視圖控制器進(jìn)行切換的操作。Intent實(shí)現(xiàn)原理也是一樣的,也有一個(gè)棧,這個(gè)棧中存儲(chǔ)的內(nèi)容是一個(gè)個(gè)的Activity,Activity的Start和Finish操作對(duì)應(yīng)著棧的Push和Pop操作。

(1)在"Go Second Activity" button的單擊事件中添加跳轉(zhuǎn)代碼,跳轉(zhuǎn)到SecondActiviy,代碼如下, 下方代碼是放在onCreate方法中。在下方使用的Intent類的構(gòu)造器中,第一個(gè)參數(shù)是當(dāng)前Activity,第二個(gè)參數(shù)是將要跳轉(zhuǎn)的Activity。通過(guò)startActivity方法來(lái)啟動(dòng)Intent, 與其說(shuō)是啟動(dòng)Intent, 倒不如說(shuō)事把當(dāng)前Activity如棧,把將要顯示的Activity放入棧頂。

Button goSecondActivityButton = (Button) findViewById(R.id.go_sceond_button);
goSecondActivityButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//新建一個(gè)Intent(當(dāng)前Activity, SecondActivity)=====顯示Intent
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
//啟動(dòng)Intent
startActivity(intent);
}
}); 

(2) 如果MainActivity中的值要傳給要跳轉(zhuǎn)過(guò)去的SecondActivity,那么就可以通過(guò)Intent的對(duì)象中的putExtra方法來(lái)進(jìn)行傳值。在上面的代碼startActivity()方法的上方加上下面這段代碼就是給目標(biāo)Activity傳值。data是一個(gè)String類型的變量,其中存的值是要傳給將要跳轉(zhuǎn)的Activity的。對(duì)象intent通過(guò)調(diào)用putExtra來(lái)進(jìn)行傳值,第一個(gè)參數(shù)是值得名字,也就是值的key, 在下個(gè)Activity中通過(guò)這個(gè)key來(lái)獲取對(duì)應(yīng)的value。

//傳值給下一個(gè)Activity
String data = "我是上一個(gè)Activity中傳過(guò)來(lái)的值";
intent.putExtra("extra_data", data); 

(3) 在新的Activity中我們需要獲取傳過(guò)來(lái)的值顯示在TextView上,并且點(diǎn)擊一個(gè)Back按鈕返回到上一層Activity,具體代碼如下。這些代碼是放在第二個(gè)Activity的onCreate()方法中的。可以通過(guò)getIntent獲取是通過(guò)那個(gè)Intent跳轉(zhuǎn)的,換句話說(shuō)事獲取當(dāng)前的導(dǎo)航棧。獲取Intent對(duì)象后,通過(guò)getStringExtra()方法傳入一個(gè)相應(yīng)的鍵,通過(guò)這個(gè)鍵來(lái)獲取值。因?yàn)槲覀儌魅氲闹凳荢tring類型的所以用getStringExtra(), 不同類型的值對(duì)應(yīng)著不同的方法。然后把獲取的值顯示在TextView上。之后點(diǎn)擊Button返回。 Button中的finish()方法是結(jié)束當(dāng)前Activity,就會(huì)自動(dòng)返回上一個(gè)Activity。TextView和Button也是通過(guò)拖拽的方式來(lái)獲取的,然后通過(guò)id進(jìn)行事件的處理和賦值。

//獲取上一個(gè)Activity傳過(guò)來(lái)的值
Intent intent = getIntent();
String data = intent.getStringExtra("extra_data");
//將獲取的值顯示在TextView上
TextView dataTextView = (TextView) findViewById(R.id.data_text_view);
dataTextView.setText(data);
//點(diǎn)擊Button返回上一個(gè)Activity
Button backButton = (Button) findViewById(R.id.bank_button);
backButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
}); 

經(jīng)過(guò)上面的步驟,最終運(yùn)行效果如下,點(diǎn)擊MainActivity中的Go Second Activity按鈕就會(huì)跳轉(zhuǎn)到第二個(gè)Activity,并且把第一個(gè)頁(yè)面中傳的值會(huì)在第二個(gè)Activity中進(jìn)行顯示。點(diǎn)擊SecondActivity中的Back按鈕就會(huì)執(zhí)行finish()方法返回上一個(gè)Activity。

2. 使用Intent打開(kāi)系統(tǒng)功能

你可以以協(xié)議的方式打開(kāi)系統(tǒng)的某些功能,比如打開(kāi)系統(tǒng)的瀏覽器,系統(tǒng)的撥號(hào)鍵盤等。在iOS也是這樣,不過(guò)是通過(guò)Application對(duì)象打開(kāi)某些協(xié)議如tel://撥號(hào)協(xié)議等來(lái)調(diào)用系統(tǒng)功能。在安卓系統(tǒng)中也可以通過(guò)Intent對(duì)象來(lái)做這些操作。

(1)調(diào)用瀏覽器打開(kāi)鏈接的代碼如下,下方代碼是調(diào)用瀏覽器打開(kāi)鏈接。ACTION_VIEW是比較智能的,他會(huì)通過(guò)用戶傳入的數(shù)據(jù)來(lái)打開(kāi)相應(yīng)的應(yīng)用,下方是通過(guò)setData傳入的網(wǎng)址,所以就會(huì)調(diào)用瀏覽器,如果傳入的時(shí)tel:10010, 就會(huì)調(diào)用撥號(hào)盤。

Button openBaiduButton = (Button) findViewById(R.id.open_baidu_button);
openBaiduButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//調(diào)用本地瀏覽器打開(kāi)網(wǎng)址
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
}
}); 

(2)調(diào)用撥號(hào)盤你可以通過(guò)上面的方式改變一下傳入的數(shù)據(jù)即可,但是你還可以通過(guò)Intent.ACTION_DIAL也是可以調(diào)用撥號(hào)盤的,具體代碼如下所示:

Button telPhoneButton = (Button) findViewById(R.id.tel_number);
telPhoneButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:"));
startActivity(intent);
}
}); 

點(diǎn)擊上方兩個(gè)按鈕第一個(gè)會(huì)通過(guò)瀏覽器打開(kāi)網(wǎng)址,第二個(gè)會(huì)打開(kāi)撥號(hào)盤,運(yùn)行效果如下所示。

3.從返回中的Activity中獲取值

從上面的實(shí)例中可知,我們可以把值從一個(gè)Activity中傳入到下一個(gè)Activity中。接下來(lái)要做的事情剛好相反,是從返回的頁(yè)面中獲取值。這種傳值也是通過(guò)Intent來(lái)做的。我們?cè)贛ainAcvitiy中添加一個(gè)按鈕“Go Third Activity”,點(diǎn)擊按鈕跳轉(zhuǎn)到第三個(gè)Activity中,然后返回獲取第三個(gè)Activity中傳過(guò)來(lái)的值。

(1)跳轉(zhuǎn)時(shí)通過(guò)startActivityForResult()方法來(lái)進(jìn)行值得回傳,第一個(gè)參數(shù)就是intent對(duì)象,第二個(gè)參數(shù)是requestCode(請(qǐng)求碼)。requestCode在返回后的回調(diào)方法中會(huì)使用到。

Button goThiredActivityButton = (Button) findViewById(R.id.go_third_button);
goThiredActivityButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//從下一個(gè)Activity中獲取數(shù)據(jù)
Intent intent = new Intent(MainActivity.this, ThirdActivity.class);
startActivityForResult(intent, 1);
}
});

(2)在ThirdActivity中要做的事情就是通過(guò)Intent返回值,具體代碼如下所示,返回值也是通過(guò)Intent對(duì)象的putExtra方法,然后去執(zhí)行setReault方法即可。setResult()方法的第一個(gè)參數(shù)是resultCode(結(jié)果碼),也是在上一個(gè)Activity中接收值的回調(diào)中使用。

Button backButton = (Button) findViewById(R.id.third_back_button);
backButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = getIntent();
intent.putExtra("data_return", "我是第三個(gè)Activity中返回的數(shù)據(jù)");
setResult(RESULT_OK, intent);
finish();
}
});

(3)接著就得在MainActivity中去重寫處理返回值的回調(diào)方法了,也就是onActivityResult回調(diào)方法。在方法中通過(guò)key來(lái)獲取傳過(guò)來(lái)的值,并把值賦值給MainActivity中的TextView具體代碼如下:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case :
if (resultCode == RESULT_OK) {
String returnedData = data.getStringExtra("data_return");
TextView returnedDataTextView = (TextView) findViewById(R.id.return_textview);
returnedDataTextView.setText(returnedData);
}
break;
}
}

經(jīng)過(guò)上面的步驟,運(yùn)行效果如下,點(diǎn)擊Go Third Activity會(huì)跳轉(zhuǎn)到ThirdActivity中,然后從ThirdActivity中點(diǎn)擊Back按鈕進(jìn)行返回就會(huì)在上一個(gè)Activity中的TextView上顯示ThirdActivity中返回的值,具體效果如下所示。

以上所述是小編給大家介紹的Android開(kāi)發(fā)中Activity創(chuàng)建跳轉(zhuǎn)及傳值的方法的相關(guān)知識(shí),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • android中貝塞爾曲線的應(yīng)用示例

    android中貝塞爾曲線的應(yīng)用示例

    本篇文章主要介紹了android中貝塞爾曲線的應(yīng)用示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • Android搜索框組件SearchView的基本使用方法

    Android搜索框組件SearchView的基本使用方法

    這篇文章主要為大家詳細(xì)介紹了Android搜索框組件SearchView的基本使用方法,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Android控件陰影顏色調(diào)整示例

    Android控件陰影顏色調(diào)整示例

    這篇文章主要介紹了Android控件陰影顏色調(diào)整示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • Android RecyclerView的簡(jiǎn)單使用

    Android RecyclerView的簡(jiǎn)單使用

    這篇文章主要為大家詳細(xì)介紹了Android RecyclerView簡(jiǎn)單使用的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 最新評(píng)論