積一時之跬步 , 臻千里之遙程
千里的路程都是從一步一步開始走的,無邊無際的江河都是從一條條小溪匯聚而成的!「凡事不是一蹴而就的」,
一分耕耘,一分識訓
希望在這里你們能識訓到你們想要的, 「共勉」!
🍅點擊查看Android總結文章總目錄
文章目錄
- 4 程式單元活動Activity
- 4.1 Activity的生命周期
- 4.2 Intent與IntentFilter
- 4.2.1 Intent
- 4.2.2 IntentFilter
- 4.3 在Activity之間的跳轉
- 4.3.1 在Activity之間資料傳輸
- 1.使用Intent的putExtra()方法傳遞資料
- 2.使用Bundle類傳遞資料
- 4.3.2 Activity之間的資料回傳
- 4.4 Activity的任務堆疊的啟動模式
- 4.4.1 Android中的任務堆疊
- 4.4.2 Activity的啟動模式
- 4.5 使用Fragment
- 4.5.1 Fragment簡介
- 4.5.2 Fragment生命周期
- 4.5.3 創建Fragment
- 4.5.4 在Activity中添加Fragment
4 程式單元活動Activity
4.1 Activity的生命周期


(1)onCreate():Activity創建時呼叫,通常做一些初始化設定
(2)inStart():Activity即將可見時呼叫
(3)inResume(): Activity獲取焦點時呼叫
(4)onPause(): 當前Activity被其他Activity覆寫或螢屏鎖定時呼叫
(5)onStop(): Activity對用戶不可見時呼叫
(6)onDestroy(): Activity銷毀時呼叫
(7)onRestart():Activity從停止狀態到在啟動呼叫時期


? * 如果希望某一個界面一直處于豎屏或者橫屏狀態,不隨手機的晃動而改變,可以在清單檔案中通過設定Activity的screenOrientation屬性完成,
//豎屏 android:screenOrientation="portrait"
//橫屏 android:screenOrientation="landscape"
4.2 Intent與IntentFilter
4.2.1 Intent
? Intent被稱作為意圖,是程式各個組件之間 進行互動的一種重要方式,他不僅可以指定當前組件要執行的動作,還可以在不同組件之間進行資料傳遞,一般用于啟動Activity,Service以及發送廣播等,有兩種實作方式,

1.顯式Intent
? 顯式Intent指直接指定目標組件,里面兩個引數,其中第一個引數表示當前Activity,第二個引數表示要跳轉的目標Activity,,通常,這些不包括任何其他資訊,只是應用程式在用戶與應用程式互動時啟動其具有的各種內部活動的一種方式,
Intent intent = new Intent(Intent_Demo.this,Intent_Second.class);
startActivity(intent);
2.隱示Intent
? 沒有指定組件;相反,它們必須包含足夠的資訊供系統確定哪個可用組件最適合該意圖運行,里面有三個屬性:
action:表示Intent物件要完成的動作
data:表示Intent物件中傳遞的資料
category:表示為action添加的額外資訊
第一步:在程式的清單檔案(AndroidManifest.xml)中配置Intent_Third的資訊"pdsu.edu.www" 里面內容任意,category 屬性里面資訊android:name=“android.intent.category.DEFAULT”
<activity android:name=".Intent_Third">
<intent-filter>
<action android:name="pdsu.edu.www" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
第二步:
Intent intent2=new Intent();
intent2.setAction("pdsu.edu.www");
startActivity(intent2);
3.下面setClassName也可以實作組件之間的跳轉
(1)public Intent setClassName(Context packageContext, String className)
引數:
packageContext:實作此類的應用程式包的背景關系
className:將用作次Intent組件的應用程式包內的類的名稱
intent1.setClassName(Intent_Demo.this,"com.example.administrator.edittext.Intent_Second");
(2)public Intent setClassName(String packageName, String className)
引數:
packageName:實作所需組件的包的名稱
className:將用作次Intent組件的應用程式包內的類的名稱
intent1.setClassName("com.example.administrator.edittext","com.example.administrator.edittext.Intent_Second");
4.2.2 IntentFilter
? 當發送一個隱式Intent后,Android系統會將他與程式中的每一個組件的過濾器進行匹配,匹配屬性有action,data,category,需要者三個屬性都匹配成功才能喚起相應的組件,在接下來,對三個屬性進行介紹:



4.3 在Activity之間的跳轉
4.3.1 在Activity之間資料傳輸
使用Intent傳遞資料有兩種方式,具體如下:
1.使用Intent的putExtra()方法傳遞資料
? 由于Activity之間需要傳遞不同型別的資料,因此Android系統提供了多個多載的putExtra()方法,包含兩個引數:引數name表示傳遞資料名稱,引數value表示傳遞的資料資訊

例如:
Intent intent = new Intent(Intent_Demo.this,Intent_Second.class);
intent.putExtra("studentName","小明");
Intent_Sencond 接收資訊:
Intent intent =getIntent();
String name = intent.getStringExtra("studentName");
Toast.makeText(Intent_Second.this,"獲取到的姓名為:"+name,Toast.LENGTH_SHORT).show();
2.使用Bundle類傳遞資料
? Bundle類與Map介面比較類似,都是通過鍵值對的形式來保存資料,

4.3.2 Activity之間的資料回傳
資料回傳包括3個方法:
1.startActivityForResult()方法
Intent intent3=new Intent(Intent_Demo.this,Intent_Third.class);
//第2個引數用于標識請求資料來源
startActivityForResult(intent3,1);
2.setResult()方法
第一個引數表示回傳碼,用于表示回傳的資料來自那個Activity
第二個引數添加回傳資料
//通過點擊事件進行回傳資料
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent ();
//放入資料
intent.putExtra("data","hello");
// 第一個引數表示回傳碼,用于表示回傳的資料來自那個Activity,第二個引數添加回傳資料
setResult(2,intent);
finish();
}
});
? 值得注意的是,在使用setResult()方法之后,需要呼叫finish()方法關閉Activity,setResult()方法只負責回傳資料,沒有跳轉的功能,
**3.onActivityResult()**方法
requestCode,resultCode來識別資料的來源
//資料回傳
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==1&&resultCode==2){
//獲取傳遞過來的資料
String result= data.getStringExtra("data");
Toast.makeText(Intent_Demo.this,result,Toast.LENGTH_SHORT).show();
}
}
4.4 Activity的任務堆疊的啟動模式
4.4.1 Android中的任務堆疊
任務堆疊:就是用來存放Activity實體的容器
特點:就是先進后出
操作:壓堆疊和出堆疊
4.4.2 Activity的啟動模式
Activity的啟動模式有四種:
1.standard模式:
默認啟動方式,每啟動一個Activity就會在堆疊頂創建一個新的實體
android:launchMode="standard"

2.singleTop模式:
模式會判斷要啟動的Activity實體是否位于堆疊頂,如果位于堆疊頂直接復用,否則創建新的實體
3.singTask模式:
模式下每次啟動該Activity是,系統會首先檢查堆疊中是否存在當前Activity實體,如果存在則直接使用,并把當前Activity之上的所有實體全部出堆疊
4.singleInstance模式:
模式會啟動一個新的任務堆疊來管理Activity實體,無論從那個任務堆疊中啟動該Activity,該實體在整個系統中只有一個
4.5 使用Fragment
4.5.1 Fragment簡介
Fragment(碎片)是一種 可以嵌入在Activity中的UI片段,他可以用來描述Activity中的一部分布局
4.5.2 Fragment生命周期


onAttach():Fragment和Activity建立關聯的時候呼叫的
onCreateView():Fragment 創建視圖(加載布局)時呼叫
onActivityCreated():Fragment相關聯的Activity已經創建時呼叫
onDestriyView() :Fragment關聯的視圖被移除時呼叫
onDetach() :解除關聯的時候呼叫的
4.5.3 創建Fragment

4.5.4 在Activity中添加Fragment


private FragmentTransaction beginTran;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//創建Fragment實體物件(ContentFragment,MenuFragment是兩個創建的類)
ContentFragment contentFragment = new ContentFragment();
MenuFragment menuFragment = new MenuFragment();
//開啟事務
beginTran = getFragmentManager().beginTransaction();
//獲取事務添加Fragment
beginTran.replace(R.id.foodcontent,contentFragment);
beginTran.replace(R.id.menu,menuFragment);
beginTran.commit();//提交事務
}
后續筆記會持續更新,希望大家給個一鍵三連!!!!!
點擊前往Android開發總目錄

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/333777.html
標籤:java
