【Android開發(fā)】intent.putExtra()方法參數(shù)詳解及示例

一. putExtra()方法的作用

  1. 先來說下intent的作用彰檬,intent是Android程序中各組件之間進(jìn)行交互的一種重要方式壁袄,一般被用來啟動(dòng)活動(dòng)户魏、啟動(dòng)服務(wù)以及發(fā)送廣播等赁项;intent在啟動(dòng)Activity的時(shí)候可以傳遞數(shù)據(jù),比如說給另一個(gè)Activity傳遞數(shù)據(jù)温治,那么活動(dòng)與活動(dòng)之間是怎樣進(jìn)行數(shù)據(jù)傳遞的呢?
  2. 這時(shí)候就需要用到putExtra()方法戒悠。intent中提供一系列的putExtra()方法的重載熬荆,可以把想要傳遞的數(shù)據(jù)暫存在intent中,當(dāng)另一個(gè)活動(dòng)啟動(dòng)后绸狐,再把這些數(shù)據(jù)從intent緩存中取出即可卤恳。
  3. putExtra("A", B)方法中,AB為鍵值對(duì)寒矿,第一個(gè)參數(shù)為鍵名突琳,第二個(gè)參數(shù)為鍵對(duì)應(yīng)的值,這個(gè)值才是真正要傳遞的數(shù)據(jù)符相。舉個(gè)栗子:
String data = "Hello World";
...
intent.putExtra("extra_data", data);

既然數(shù)據(jù)是傳遞給另一個(gè)Activity的拆融,那另一個(gè)Activity怎么獲取這個(gè)數(shù)據(jù)(鍵值對(duì))呢?這個(gè)時(shí)候就需要用到get×××Extra()方法,那“×××”又是啥意思呢镜豹?其實(shí)它是數(shù)值類型傲须。比如上例中的鍵值對(duì)("extra_data", data),data的類型是String趟脂,那么獲取這組數(shù)據(jù)的方法就是getStringExtra()泰讽。同理,還有getIntExtra()散怖、getBooleanExtra()等方法菇绵。

二. 實(shí)戰(zhàn)練習(xí)

??光說不練假把式,我們學(xué)習(xí)新知識(shí)點(diǎn)的時(shí)候都應(yīng)該多敲代碼多練習(xí)镇眷,以加深記憶咬最!下面我就寫一個(gè)栗子: (注:環(huán)境為Android Studio 4.0
??這個(gè)栗子的思路就是在第一個(gè)活動(dòng)(MainActivity)里新建2個(gè)文本輸入框EditText,然后再新建一個(gè)Button欠动,添加點(diǎn)擊事件永乌,當(dāng)點(diǎn)擊Button時(shí),MainActivity中的2個(gè)TextView中輸入的內(nèi)容同時(shí)在第二個(gè)活動(dòng)SecondActivity中的TextView中顯示出來具伍。

1. 新建第一個(gè)Activity:MainActivity

??以下是MainActivity的源碼:

public class MainActivity extends AppCompatActivity {

    //聲明控件對(duì)象
    private EditText editText1;
    private EditText editText2;
    private Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //獲取控件的對(duì)象
        editText1 = findViewById(R.id.edit_1);
        editText2 = findViewById(R.id.edit_2);
        button = findViewById(R.id.button);

        //為Button綁定監(jiān)聽器
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //獲取文本輸入框中的內(nèi)容
                String editTextStr1 = editText1.getText().toString();
                String editTextStr2 = editText2.getText().toString();
                //創(chuàng)建intent對(duì)象翅雏,參數(shù)分別為上下文、要跳轉(zhuǎn)的Activity類
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                //將要傳遞的值附加到Intent對(duì)象中暫時(shí)保存
                intent.putExtra("extra_data1", editTextStr1);
                intent.putExtra("extra_data2", editTextStr2);
                //啟動(dòng)該intent對(duì)象人芽,實(shí)現(xiàn)Activity跳轉(zhuǎn)
                startActivity(intent);
            }
        });
    }
}

??MainActivity對(duì)應(yīng)的布局文件為activity_main.xml望几,使用簡單的LinearLayout線性布局,控件排布為從上到下依次為文本輸入框萤厅、文本輸入框橄抹、按鈕。其源碼為:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/edit_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <EditText
        android:id="@+id/edit_2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button"
        android:textAllCaps="false" />

</LinearLayout>

2. 新建第二個(gè)Activity:SecondActivity

public class SecondActivity extends AppCompatActivity {

    //聲明TextView對(duì)象
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        //獲取TextView控件對(duì)象
        textView = findViewById(R.id.text_view);

        //獲取啟動(dòng)該Activity的Intent對(duì)象
        Intent intent = getIntent();

        //獲取Intent中暫存的數(shù)據(jù)
        String data1 = intent.getStringExtra("extra_data1");
        String data2 = intent.getStringExtra("extra_data2");

        //將MainActivity中兩個(gè)輸入框的輸入的內(nèi)容一同在SecondActivity的TextView控件中顯示出來
        textView.setText(data1 + " " + data2);
    }
}

??SecondActivity的布局文件activity_second.xml比較簡單惕味,就是一個(gè)簡單的文本顯示控件TextView楼誓,就不貼代碼了。

三. 運(yùn)行結(jié)果

  • 點(diǎn)擊AndroidStudio的run按鈕運(yùn)行程序名挥,程序首先進(jìn)入MainActivity疟羹,在Android模擬器中運(yùn)行的結(jié)果如下圖所示:
  • 在兩個(gè)文本輸入框中依次輸入“Hello world!”禀倔、“Awesome Awesome榄融!”,點(diǎn)擊當(dāng)前UI中的Button按鈕救湖,程序跳轉(zhuǎn)到SecondActivity,運(yùn)行的結(jié)果如下圖所示:
  • 這樣剃袍,我們就通過intent.putExtra()方法將一個(gè)活動(dòng)的數(shù)據(jù)傳遞到了第二個(gè)活動(dòng)中,并顯示出來捎谨。
    寫在最后:請(qǐng)大神勿噴民效,這是本人的自學(xué)筆記憔维,旨在鞏固自學(xué)過程中的學(xué)習(xí)效果,如果能給Android小白帶來一點(diǎn)點(diǎn)幫助畏邢,就再好不過了
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末业扒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子舒萎,更是在濱河造成了極大的恐慌程储,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件臂寝,死亡現(xiàn)場離奇詭異章鲤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)咆贬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門败徊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人掏缎,你說我怎么就攤上這事皱蹦。” “怎么了眷蜈?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵沪哺,是天一觀的道長。 經(jīng)常有香客問我酌儒,道長辜妓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任忌怎,我火速辦了婚禮嫌拣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘呆躲。我一直安慰自己,他們只是感情好捶索,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布插掂。 她就那樣靜靜地躺著,像睡著了一般腥例。 火紅的嫁衣襯著肌膚如雪辅甥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天燎竖,我揣著相機(jī)與錄音璃弄,去河邊找鬼。 笑死构回,一個(gè)胖子當(dāng)著我的面吹牛夏块,可吹牛的內(nèi)容都是我干的疏咐。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼脐供,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼浑塞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起政己,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤酌壕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后歇由,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體卵牍,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年沦泌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了糊昙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赦肃,死狀恐怖溅蛉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情他宛,我是刑警寧澤船侧,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站厅各,受9級(jí)特大地震影響镜撩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜队塘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一袁梗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧憔古,春花似錦遮怜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至焰情,卻和暖如春陌凳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背内舟。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工合敦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人验游。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓充岛,卻偏偏與公主長得像保檐,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子裸准,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344