本系列將使用 Android Studio 將《第一行代碼》(書中講解案例使用Eclipse)刷一遍,旨在爲想入坑 Android 開發,並選擇 Android Studio 做爲開發 IDE 的同窗開路。
PS:其實我就是現學現賣,但願我能堅持刷完。html
在 Day 一、Day 2,咱們建立了第一個App project,並分析了項目結構、運行原理,實踐了 LogCat 的使用。java
系列目錄在此:android
Activity 是 一個 App 的臉面,而這又是一個看臉的世界,那就讓咱們從臉開始吧。這篇都是基礎的羅列,沒有什麼值得注意的地方。app
跟着書走,先建立一個 ActivityTest 的項目,注意在選擇 Activity 的時候,選擇 Add No Activity。以下圖ide
在 app/src/mani/java/com.xxx.ActivityTest 目錄上點擊右鍵 → New,這裏有兩種選擇:佈局
以下圖this
新建立好的項目是沒有 Layout 目錄的,在 app/src/main/res 目錄上點右鍵 → New → Android resource directory,在彈出的對話框中將 Resource type 選爲 layout。code
而後在 res/Layout 目錄上點右鍵 → New → Layout resource file,在彈出的對話框中填上名字,Finish,這樣就建立好了。xml
打開文件,能夠向裏面添加一個 Button 控件試試看。htm
Activity 必須在 AndroidManifest.xml 文件中註冊纔可使用,代碼以下:
<activity android: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 是 Android 提供的一種很是好的提醒方式,在程序中可使用她將一些短小的信息通知給用戶,這些信息會在一段時間後自動消失。
例子是這樣的,在 onCreate() 方法中,給 Button 綁定一個點擊事件,再點擊 Button 時顯示一條信息,代碼以下:
Button button1 = (Button) findViewById(R.id.button_1); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(FirstActivity.this, "you clicked button 1", Toast.LENGTH_SHORT).show(); } });
PS:我多麼但願 HTML 中也有這樣的元素啊。
我真心以爲 Menu 沒什麼好講的。
建立一個名爲 SecondActivity 的 Activity(好繞口)。
例子是這樣的,在 FirstActivity 中點擊 Button 後跳轉到 SecondActivity。代碼以下:
button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(FirstActivity.this,SecondActivity.class); startActivity(intent); } });
例子是這樣的,在 FirstActivity 中點擊 Button 後跳轉到 SecondActivity,並將一個字符串傳過去。
1.FirstActivity 中發送代碼以下:
Intent intent = new Intent(FirstActivity.this,SecondActivity.class); String data = "hello second"; intent.putExtra("extra_data", data); startActivity(intent);
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: } }
儘管我試圖在本文中儘可能完整的進行描述,但受限於篇幅和個人我的水平,本文不免有所遺漏,歡迎在評論中指出。
若是您以爲閱讀本文對您有幫助,請點一下「推薦」按鈕,您的「推薦」將是我最大的寫做動力!
addict
原文連接:http://www.cnblogs.com/DebugLife/p/4349428.html
本文謝絕轉載,如需轉載需徵得做者本人贊成,謝謝。