Android Studio 单刷《第一行代码》系列 03 —— Activity 基础
前情提要(Previously)
本系列將使用 Android Studio 將《第一行代碼》(書中講解案例使用Eclipse)刷一遍,旨在為想入坑 Android 開發,并選擇 Android Studio 作為開發 IDE 的同學開路。
PS:其實我就是現學現賣,希望我能堅持刷完。
在 Day 1、Day 2,我們創建了第一個App project,并分析了項目結構、運行原理,實踐了 LogCat 的使用。
系列目錄在此:
- Android Studio 單刷《第一行代碼》系列目錄
摘要(Abstract)
Activity 是 一個 App 的臉面,而這又是一個看臉的世界,那就讓我們從臉開始吧。這篇都是基礎的羅列,沒有什么值得注意的地方。
Activity 的基本用法
跟著書走,先創建一個 ActivityTest 的項目,注意在選擇 Activity 的時候,選擇 Add No Activity。如下圖
創建活動
在 app/src/mani/java/com.xxx.ActivityTest 目錄上點擊右鍵 → New,這里有兩種選擇:
- 選擇 Java Class,新建一個名為 FirstActivity 的類,并 extends Activity,重寫 onCreate() 方法。代碼可以參考之前的 HelloWorld。
- 選擇 Activity,系統會生成一個 Activity,以及相關的布局文件 Layout,并在 AndroidManifest.xml 中注冊。
如下圖
創建和加載布局
新創建好的項目是沒有 Layout 目錄的,在 app/src/main/res 目錄上點右鍵 → New → Android resource directory,在彈出的對話框中將 Resource type 選為 layout。
然后在 res/Layout 目錄上點右鍵 → New → Layout resource file,在彈出的對話框中填上名字,Finish,這樣就創建好了。
打開文件,可以向里面添加一個 Button 控件試試看。
注冊
Activity 必須在 AndroidManifest.xml 文件中注冊才可以使用,代碼如下:
<activityandroid:name=".FirstActivity"android:label="FirstActivity" ></activity>如果想讓其在 App 運行時打開,還需要添加 intent-filter,代碼如下:
<intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>隱藏標題欄
在 Activity 的 onCreate()方法中添加?requestWindowFeature(Window.FEATURE_NO_TITLE);
PS:在這里我遇到個坑,我創建的繼承 Activity 的 活動默認就不顯示標題欄,而且我也不知道怎么能讓標題欄顯示出來。
消息提示 Toast
Toast 是 Android 提供的一種非常好的提醒方式,在程序中可以使用她將一些短小的信息通知給用戶,這些信息會在一段時間后自動消失。
例子是這樣的,在 onCreate() 方法中,給 Button 綁定一個點擊事件,再點擊 Button 時顯示一條信息,代碼如下:
Button button1 = (Button) findViewById(R.id.button_1);button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(FirstActivity.this, "you clicked button 1", Toast.LENGTH_SHORT).show();}});PS:我多么希望 HTML 中也有這樣的元素啊。
Menu
我真心覺得 Menu 沒什么好講的。
Activity 跳轉
創建一個名為 SecondActivity 的 Activity(好繞口)。
例子是這樣的,在 FirstActivity 中點擊 Button 后跳轉到 SecondActivity。代碼如下:
button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(FirstActivity.this,SecondActivity.class);startActivity(intent);}});傳遞數據
例子是這樣的,在 FirstActivity 中點擊 Button 后跳轉到 SecondActivity,并將一個字符串傳過去。
1.FirstActivity 中發送代碼如下:
2.SecondActivity中,在 onCreate() 方法中,接收代碼如下:
Intent intent = getIntent();String data = intent.getStringExtra("extra_data");返回數據
需要用 startActivityForResult() 來代替 startActivity() 方法。
例子是這樣的,在 FirstActivity 中點擊 Button 后跳轉到 SecondActivity,然后點擊返回鍵返回到 FirstActivity,并返回一個字符串。
1.FirstActivity 中發送代碼如下:
startActivityForResult(intent, 1);其中的第二個參數 requestCode,用于在之后的回調方法中判斷數據的來源。要保證在當前 Activity 中的唯一性。
2.SecondActivity中,重寫點擊返回鍵時觸發的 onBackPressed() 方法,代碼如下:
@Override public void onBackPressed(){Intent intent = new Intent();intent.putExtra("data_return","hello first");setResult(RESULT_OK, intent);finish(); }3.當從 SecondActivity 返回時,會回調上一個活動的 onActivityResult() 方法,所以需要重寫 FirstActivity 的 onActivityResult() 方法來獲取返回的數據,代碼如下:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {switch (requestCode) {case 1:if (resultCode == RESULT_OK) {String returnedData = data.getStringExtra("data_return");Log.d("FirstActivity", returnedData);}break;default:} }其它(Miscellaneous)
盡管我試圖在本文中盡量完整的進行描述,但受限于篇幅和我的個人水平,本文難免有所遺漏,歡迎在評論中指出。
如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕,您的“推薦”將是我最大的寫作動力!
關于作者(About Me)
addict
原文鏈接:http://www.cnblogs.com/DebugLife/p/4349428.html
總結
以上是生活随笔為你收集整理的Android Studio 单刷《第一行代码》系列 03 —— Activity 基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android Studio 单刷《第一
- 下一篇: Android Studio 单刷《第一