Android入門計劃<五>---頁面的創(chuàng)建和頁面之間的跳轉(zhuǎn)

前言:不論是在哪一個app中都會有很多頁面确垫,比如某q扁眯、某x疙挺,從聊天列表可以進入聊天頁面钮呀,這是兩個完全不同的頁面剑鞍。這個東西在Android中叫做 Activity (活動)

一、Activity 三要素

在我們新建一個項目之后行楞,AndroidStudio(后面簡稱AS)都會給我們創(chuàng)建好一個Activity(后面簡稱Act),那么這個頁面就作為了App的啟動頁面土匀。 下面來說一個Act組成的三要素子房。

1.1 布局文件 .xml

路徑在app \ src \ main \ res \ layout
舉個例子,系統(tǒng)給我們的創(chuàng)建的 acitvity_main.xml


image.png

布局文件里就是我們需要展示的ui就轧。

1.2 控制布局的java文件

以系統(tǒng)創(chuàng)建的為例:app \ src \ main \ java \ com \ example \ myapplication \ MainActivity.java


public class MainActivity extends AppCompatActivity {

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

1.我們發(fā)現(xiàn)它繼承了 AppCompatActivity 证杭,我們的要求是 繼承于Activity。這個Activity的子類妒御,所以滿足要求解愤。
2.還有他重寫了onCreate方法,并且調(diào)用了一個 setContentView() 方法乎莉,這個方法是用來填充布局的送讲,R:資源 layout屬于資源, activity_main 就是對應(yīng)的xml布局了

1.3 要在AndroidManifest中注冊Activity

注意注冊Act要在 application節(jié)點中間寫

  <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
//啟動頁
        <activity android:name=".MainActivity">
            <intent-filter>//過濾器
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />//意味著它是啟動頁惋啃,一個項目中只能有一個啟動頁
            </intent-filter>
        </activity>
    </application>

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

學(xué)會了act的組成,那我們需要從一個頁面跳到另一個頁面需要怎么做边灭。

1异希、創(chuàng)建好目標頁面

a、xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:gravity="center"
    android:layout_height="match_parent"
    tools:context=".Main2Activity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:text="我是頁面2"/>
    
</LinearLayout>

b绒瘦、java文件 名字為:Main2Activity

public class Main2Activity extends AppCompatActivity {

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

c称簿、清單文件注冊

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

2、寫跳轉(zhuǎn)方法

比如我們在Main要跳轉(zhuǎn)到Main2
我們在Main寫一個按鈕惰帽,點擊按鈕然后跳轉(zhuǎn)到 Main2

   Button button = findViewById(R.id.btn_goto2);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                
                //構(gòu)建一個Intent對象  參數(shù)1:當(dāng)前頁面的上下文   參數(shù)2:目標Act.class
                Intent intent = new Intent(MainActivity.this,Main2Activity.class);
                //跳轉(zhuǎn)Act 參數(shù):intent對象 
                startActivity(intent);

            }
        });

點擊前:


image.png

點擊后:


image.png

3憨降、 頁面?zhèn)髦堤D(zhuǎn)

如果我們現(xiàn)在有需求,要求頁面Main->Main2 帶參數(shù)或者帶內(nèi)容過去怎么辦该酗。
我們在Main的跳轉(zhuǎn)里做手腳

                //構(gòu)建一個Intent對象  參數(shù)1:當(dāng)前頁面的上下文   參數(shù)2:目標Act.class
                Intent intent = new Intent(MainActivity.this,Main2Activity.class);

                //intent.putExtra
                intent.putExtra("content","我是頁面1傳來的值");

                //跳轉(zhuǎn)Act 參數(shù):intent對象
                startActivity(intent);

然后在Main2接收券册,并且讓其顯示在Main2的文本框上

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        TextView textView = findViewById(R.id.tv_main2);

        //獲取intent信息
        Intent intent = getIntent();
        //獲取intnet、傳來的值
        String content = intent.getStringExtra("content");
        
        //設(shè)置在textview中
        textView.setText(content);
    }

看效果,點擊前:


image.png

點擊后:


image.png

有人可能會說烁焙,我不光想傳String航邢,還想有其他類型,當(dāng)然Android都提供了骄蝇,這里不做演示膳殷,把支持參數(shù)貼出來:


image.png

當(dāng)然有這么多類型,到了Main2 也就會有 intent.getXXX

4九火、頁面跳轉(zhuǎn)回傳

假設(shè)赚窃,我們在Main跳轉(zhuǎn)到Main2 ,當(dāng)Main2做了某些操作岔激,我們Main頁面需要知道勒极,那么就用到了跳轉(zhuǎn)回傳,這個需要兩個頁面配合虑鼎,我們來演示一下辱匿。

Main中代碼:

    //構(gòu)建一個Intent對象  參數(shù)1:當(dāng)前頁面的上下文   參數(shù)2:目標Act.class
                Intent intent = new Intent(MainActivity.this,Main2Activity.class);
                //intent.putExtra
                intent.putExtra("content","我是頁面1傳來的值");

                //跳轉(zhuǎn)回傳
                startActivityForResult(intent,100);

image.png

我們在Main2中加一個按鈕為:確認更新

然后點擊按鈕的時候關(guān)閉Mian2,讓Main得到某些信息

Main2代碼:

 Button button = findViewById(R.id.btn_main2);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.putExtra("result","我更新完了");
                setResult(200,intent);
                finish();
            }
        });

我們完成了準備工作炫彩,這里要注意的一點是匾七,在Main中還需要重寫一個方法:onActivityResult

  @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //一個請求碼,一個響應(yīng)碼江兢。 data是參數(shù)
        if (requestCode==100&&resultCode==200){
            //100是我們跳轉(zhuǎn)的時候填的
            //200是在Main2中填的

            //這里我們直接把傳過來的值昨忆,顯示在按鈕上
            String result = data.getStringExtra("result");
            button.setText(result);
        }
    }
}

來看演示


r6f3t-4epl1.gif

ok

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市杉允,隨后出現(xiàn)的幾起案子邑贴,更是在濱河造成了極大的恐慌,老刑警劉巖叔磷,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件痢缎,死亡現(xiàn)場離奇詭異,居然都是意外死亡世澜,警方通過查閱死者的電腦和手機独旷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寥裂,“玉大人嵌洼,你說我怎么就攤上這事》馇。” “怎么了麻养?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長诺舔。 經(jīng)常有香客問我鳖昌,道長备畦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任许昨,我火速辦了婚禮懂盐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘糕档。我一直安慰自己莉恼,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布速那。 她就那樣靜靜地躺著俐银,像睡著了一般。 火紅的嫁衣襯著肌膚如雪端仰。 梳的紋絲不亂的頭發(fā)上捶惜,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機與錄音荔烧,去河邊找鬼吱七。 笑死,一個胖子當(dāng)著我的面吹牛茴晋,可吹牛的內(nèi)容都是我干的陪捷。 我是一名探鬼主播回窘,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼诺擅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了啡直?” 一聲冷哼從身側(cè)響起烁涌,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎酒觅,沒想到半個月后撮执,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡舷丹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年抒钱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颜凯。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡谋币,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出症概,到底是詐尸還是另有隱情蕾额,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布彼城,位于F島的核電站诅蝶,受9級特大地震影響退个,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜调炬,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一语盈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧筐眷,春花似錦黎烈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至武翎,卻和暖如春烈炭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宝恶。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工符隙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人垫毙。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓霹疫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親综芥。 傳聞我的和親對象是個殘疾皇子丽蝎,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容