Java轉Android:第5天 用Activity和Intent實現小通訊錄
theme: juejin
攜手創作,共同成長!這是我參與「掘金日新計劃 · 8 月更文挑戰」的第5天,點選檢視活動詳情
今天學習Activity和Intent,學完之後,可以實現頁面帶參跳轉(首頁->詳情->撥號):
一、我講
今天,我主要講,第一:Activity
的生命週期,應用場景;第二:Intent
的用途,利用它實現Activity
之間的傳值跳轉。
1.1 窗體 Activity
對於Activity
我們已經不陌生了,前面幾期都用到了,我是這麼解釋的:
新建的專案,
layout
資料夾下的xml
管檢視,java
檔案下的Activity
管邏輯。
Activity
的程式碼就像下面這樣:
java
public class MainActivity extends Activity {
……
@Override
protected void onResume() {
super.onResume();
}
……
}
其實,它的本質是提供一個螢幕,並處理使用者和此螢幕的互動。
有時候,你使用App時,一個頁面跳到另一個頁面,有可能就是一個Activity
跳到另一個Activity
。
生命週期
生命週期是一個枯燥的理論,但是在專案實戰中卻很有用。生命週期是面試必問的話題之一,一些工作兩三年的應聘者,會嫌問的刁鑽,他們說實際做專案根本用不到。相反,5年以上安卓開發,對這個問題卻能很好地回答。
生命週期,可以通俗地理解為“從搖籃到墳墓”的整個過程。
Activity
也是有生命週期的。相信大家都看到過這個圖,這是安卓官方文件的一張圖。
我總結成下面這個圖,80%的精華都在這6個函式上。
我們重點關注Activity
什麼時候建立銷燬、可見不可見、能不能開始互動。有時候雖然介面可見,但是你沒法和介面互動(比如一個Dialog
風格的Activity_B覆蓋在Activity_A上面,雖然你能看見A,但是無法點選,此時A處於生命週期的onPause
。如果一個AlertDialog
對話方塊在Activity_A上彈出,雖然A也是可見不可互動,但是並不執行onPause
方法)。
寫程式更多的是處理異常情況,Activity生命週期的應用場景,多數也是用在一些異常情況上。
瞭解什麼時候處於什麼狀態,這一點非常關鍵。
看下面這個小例子,非常能說明問題:
- 當第一次開啟Activity
,它提示:初次見面,多多關照。
- 當你準備要切換到其他程式時,它提示:等您回來。
- 當你後悔了,不切了,它提示:繼續為您服務。
- 當你狠心退出,它又提示:再見,再見。
你敢說,你的App不會被使用者這麼操作嗎?你能不關注這些操作對你正向流程的衝擊嗎?
1.2 意圖 Intent
它負責對應用中一次操作的動作及資料進行描述,Android
則根據此Intent
的描述,找到對應的元件,完成呼叫。
一句話解釋就是:你要去找誰(目標元件,比如Activity)?帶著什麼禮物(動作、描述)?
上面那個圖,如果Activity-1想要啟動Activity-2,那麼就可以通過Intent
。
跳轉指定Activity
Intent通過如下方式實現兩個Activity之間的傳值跳轉。
跳轉指定意圖
除了跳轉到明確的Activity
,Intent
也支援隱式跳轉,比如它說我要打電話,發簡訊,系統就會分配到對應的跳轉目標。
```java
// 呼叫系統打電話
Intent intent = new Intent();
intent.setAction(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:12345"));
startActivity(intent);
// 呼叫系統發簡訊 Intent intent = new Intent(); intent.setAction(Intent.ACTION_SENDTO); intent.setData(Uri.parse("smsto:12345")); startActivity(intent); ```
二、你做
下面,我們要做這麼一個功能,類似於通訊錄:
第一個頁面是聯絡人主頁面MainActivity,上面只展示一個張三。點選張三,攜帶著張三的姓名和電話,跳轉到第二個詳情頁面DetailActivity,第二個頁面有個撥號按鈕,點選調到系統的撥號盤。
首先,我們先寫MainActivity
的佈局檔案activity_main.xml
,上面只有一個按鈕。
```xml
``
注意啦,注意啦,上面的
TextView有一個屬性
onClick="toDetail",另外
ConstraintLayout還有一個屬性
context=".MainActivity",這代表
TextView有一個叫
toDetail的點選事件在
MainActivity中。這種方式可以替代
textView.setOnClickListenner`設定按鈕事件。
下面就可以看到MainActivity
裡有一個toDetail(View view)
方法,正好對應xml
裡的設定。在這個方法裡,我們看到,它採用Intent
進行傳值跳轉。
```java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void toDetail(View view) {
Intent intent = new Intent(this, DetailActivity.class);
intent.putExtra("name","張三");
intent.putExtra("phone","666666");
startActivity(intent);
}
} ```
下面是跳轉進入的詳情頁DetailActivity
的佈局activity_detail.xml
,裡面是2個文字,一個撥號按鈕,同樣,撥號按鈕也採用了android:onClick="call"
的定義模式。
```xml
我們掌握了這個方法,就可以做出個性化定製功能,我想這也是學技術的意義所在。
三、關於
現在,行業內多是Android轉Java,很少有Java轉Android的。
但是,這並不妨礙Java同學瞭解Android開發,從學習的角度去拓寬自己的知識面。
所以,我會以最精簡的語言來編寫一個系列教程《Java轉Android》(第一季30篇,日更)。
其實,不管是Java還是python,只要有程式設計基礎的同學,一天看800字,30天可入門安卓。
- 實戰第13篇:Sensor距離感測器實現小豬睡覺趣味App
- 認知史 23:乏力的後半程
- 認知史 20:當下,最好的安排
- 實戰第9篇:SharedPreferences持久化儲存記事本
- 認知史 15:遠離那些過度激情的人
- Java轉Android:第1天 HelloWorld
- 認知史 9:當上了領導,你自然會有大局觀
- Java轉Android:第5天 用Activity和Intent實現小通訊錄
- Java轉Android:第2天 用Button做了個抽獎App
- 認知史 6:迷茫時的自處方式
- 認知史 5:歷史的作用
- 認知史 3:好聚好散
- RNN文字生成-想為女朋友寫詩(一):訓練文字
- AI實戰課:利用TensorFlow預測你能否月薪過萬
- 情緒宣洩App:十年前IT男程式設計撩妹紀實
- 程式碼生成OCR訓練集,老闆:沒有資料?你new一個
- 【大話專案 】不懂開發可以帶專案嗎?
- 程式設計師到底該怎麼管理?
- 我裁完兄弟們後,辭職了,轉行做了一名小職員
- 人工智慧影象實戰課:夏天照片歸類器