安卓創(chuàng)建一個(gè)新的頁面(XxxActvity)
1.右鍵包名->new-> class
2.繼承自系統(tǒng)的Activity,一般這樣的類,我們起名是XxxActivty
3.創(chuàng)建一個(gè)布局文件,layout文件夾中創(chuàng)建一個(gè)布局文件
4.復(fù)寫Activity的onCreate方法,setContentView中引用布局文件
5.在Menifest.xml文件中的application節(jié)點(diǎn)下添加
<Actvity android:name =".XxxActivity"></Activity>
這樣一個(gè)新的Activity就創(chuàng)建完成了.
然后就需要從第一個(gè)頁面中打開這個(gè)新的頁面
打開Activity的方式有兩種
一.顯示意圖
//參數(shù),第一個(gè)是Context對(duì)像,Activity本身就是,第二個(gè)要找開的Activity的字節(jié)碼文件
Intent intent = new Intent(this,XxxActivity.class);
this.startActivity(intent);
//也可以寫成
Intent intent = new Intent();
intent.setClass(XxxActivity.class);
this.startActivity(intent);
二.隱示意圖
1.在AndroidMenifest聲名中<Activity>節(jié)點(diǎn)下添加<intent-filter>
<intent-filter>
<!-- 添加一個(gè)事件類開,當(dāng)有事這個(gè)事件過來時(shí) -->
<action android:name="start_xxx_activity" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
2.在代碼中使用
//參數(shù)是一個(gè)字符串表示事件類型,自己定義
Intent intent = new Intent("start_xxx_activity");
this.startActvity(intent);
//也可以寫成
Intent intent = new Intent();
intent.setAction("start_xxx_activity");
this.startActivity(intent);
在第一個(gè)Activity中添加打開第二個(gè)Activity的入口
顯示意圖打開在Actvity:
在第一個(gè)Activity中的onCreate方法中添加代碼
TextView textView = findViewByid(R.id.text_view);
//參數(shù)是一個(gè)匿名內(nèi)部類
textView.setoncClicklistener(new OnClickListener(){
public void onclick(View view){
Intent intent = new Intent(this,XxxActivity.class);
this.startActivity(intent);
}
});
這種傳入一個(gè)對(duì)象,當(dāng)方法被調(diào)用時(shí)反過來執(zhí)行你事先定義在對(duì)象里面的方法的方式,就是回調(diào)(個(gè)人理解)
百度回調(diào)函數(shù)解釋
回調(diào)函數(shù)就是一個(gè)通過函數(shù)指針調(diào)用的函數(shù)幌缝。如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個(gè)函
數(shù)膜宋,當(dāng)這個(gè)指針被用來調(diào)用其所指向的函數(shù)時(shí),我們就說這是回調(diào)函數(shù)√锩辏回調(diào)函數(shù)不是由該函數(shù)的實(shí)
現(xiàn)方直接調(diào)用宇植,而是在特定的事件或條件發(fā)生時(shí)由另外的一方調(diào)用的,用于對(duì)該事件或條件進(jìn)行響應(yīng)同廉。
所有的控件都有setOnclick()方法,也就是說現(xiàn)在的安卓控件都可以設(shè)置點(diǎn)擊事件
給控件設(shè)置回調(diào)方法有四種方式:
1.先定義一個(gè)自己的class文件,實(shí)現(xiàn)View.OnclickListener接口
復(fù)寫onClick()方法
2.當(dāng)前Activity實(shí)現(xiàn)View.OnclickListener接口
復(fù)寫onClick()方法
3.上面實(shí)現(xiàn)的方式,使用匿名內(nèi)部類的方式,
復(fù)寫onClick()方法
4.在文件中給控件添加onclick="方法名"屬性
在Activity訪求中寫一個(gè) public void 方法名(View view) 方法,在方法體中實(shí)現(xiàn)點(diǎn)擊操作
注意:方法必須public且返回值為空,參數(shù)是View,方法名和布局文件中聲名的onlick屬性值一至
在開發(fā)中最常用的方式就是使用匿名內(nèi)部類和當(dāng)前類實(shí)現(xiàn)OnClickListener接口的方式為控件設(shè)置回調(diào)
結(jié)束Activity
想要結(jié)束一個(gè)Activity,只需要調(diào)用內(nèi)部的finish()方法,這個(gè)Activity就會(huì)結(jié)束同時(shí),在Actvity棧中移除這個(gè)Activity
this.finish()
Activity四種啟動(dòng)模式
在AndroidMenifest.xml中的Activty節(jié)點(diǎn)中添加屬性android:launchMode="standard"
1.standard
標(biāo)準(zhǔn)的啟動(dòng)模式,當(dāng)Activity打開后就會(huì)把這個(gè)Activity壓入到Activity棧的棧
底,即使是相同的Activity也不會(huì)互相影響
2.singleTop
棧頂唯一,當(dāng)一個(gè)Activity已經(jīng)在棧頂,那么這個(gè)Activity不會(huì)再壓入一個(gè)相同的
Activity到棧頂,如果棧頂不是而是棧底存在Activity一樣會(huì)在棧頂壓入一個(gè)實(shí)例
3.singleTask
單獨(dú)實(shí)例,當(dāng)棧中已經(jīng)存這個(gè)Activity的實(shí)例,就會(huì)把這個(gè)實(shí)例拿出來放到棧頂,
同時(shí)也會(huì)清除掉這個(gè)Activity所在位置頂部的所有Activity,從而使當(dāng)前Activity成為棧頂
4.singleInstance
單獨(dú)任務(wù)棧,當(dāng)Activity被打開時(shí),會(huì)單獨(dú)開一個(gè)任務(wù)棧存放這個(gè)Activity