Android Activity<喎?/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPqOsyLu687Xju/c8c3Ryb25nPk5leHQ8L3N0cm9uZz6hozxsaT7RodTxPHN0cm9uZz5CbGFua0FjdGl2aXR5PC9zdHJvbmc+ILXju/cgPHN0cm9uZz5OZXh0PC9zdHJvbmc+oaM8bGk+zO7C+kFjdGl2aXR5tcTP6sfpo7oKPHVsPgo8bGk+PHN0cm9uZz5Qcm9qZWN0PC9zdHJvbmc+OiBNeUZpcnN0QXBwPGxpPjxzdHJvbmc+QWN0aXZpdHkgTmFtZTwvc3Ryb25nPjogRGlzcGxheU1lc3NhZ2VBY3Rpdml0eTxsaT48c3Ryb25nPkxheW91dCBOYW1lPC9zdHJvbmc+OiBhY3Rpdml0eV9kaXNwbGF5X21lc3NhZ2U8bGk+PHN0cm9uZz5GcmFnbWVudCBMYXlvdXQgTmFtZTwvc3Ryb25nPjogZnJhZ21lbnRfZGlzcGxheV9tZXNzYWdlPGxpPjxzdHJvbmc+VGl0bGU8L3N0cm9uZz46IE15IE1lc3NhZ2U8bGk+PHN0cm9uZz5IaWVyYXJjaGlhbCBQYXJlbnQ8L3N0cm9uZz46IGNvbS5leGFtcGxlLm15Zmlyc3RhcHAuTWFpbkFjdGl2aXR5PGxpPjxzdHJvbmc+TmF2aWdhdGlvbiBUeXBlPC9zdHJvbmc+OiBOb25lCjxwPrXju/cgPHN0cm9uZz5GaW5pc2g8L3N0cm9uZz6hozwvcD4KCjxwPgrI57n7xOPKudPDtcSyu8rHRWNsaXBzZaOsu/LV38rH1NrKudPDw/zB7tDQuaS+36OsxMfDtNTaPGNvZGU+c3JjLzwvY29kZT4gxL/CvM/CtLS9qERpc3BsYXlNZXNzYWdlQWN0aXZpdHnA4KOsyLu689TZPGNvZGU+TWFpbkFjdGl2aXR5LmphdmE8L2NvZGU+INbQtbzI66GjPC9wPgo8cD4KtPK/qjxjb2RlPkRpc3BsYXlNZXNzYWdlQWN0aXZpdHkuamF2YTwvY29kZT4gzsS8/qOsyOe5+8TjyrnTw0VjbGlwc2WjujwvcD4KPHVsPgo8bGk+1eK49sDg1tDS0b6tsPy6rMHL0ru49jxjb2RlPm9uQ3JlYXRlKCk8L2NvZGU+ILe9t6i1xMq1z9ajrMnUuvPE47vhuPzQwtXiuPbKtc/WoaM8bGk+zazR+bu509DSu7j2PGNvZGU+b25DcmVhdGVPcHRpb25zTWVudSgpPC9jb2RlPiC3vbeotcTKtc/Wo6y1q8rHxOPU2rG+wP3W0LK7u+HKudPDtb2jrMTjv8nS1L2ry/zJvrX0oaM8bGk+u7nT0Dxjb2RlPm9uT3B0aW9uc0l0ZW1TZWxlY3RlZCgpPC9jb2RlPiC3vbeoo6zL/NPDu6e0psDtYWN0aW9uCiBiYXIgtcQ8ZW0+VXA8L2VtPiDKwrz+o6yxo7PWy/y1xNSt0fmhozxsaT67udPQ0ru49rzMs9BGcmFnbWVudMDgtcQgPGNvZGU+UGxhY2Vob2xkZXJGcmFnbWVudDwvY29kZT4gwOCho9Ta1eK49kFjdGl2aXR51tDE47K7u+HKudPDtb2howo8cD4KRnJhZ21lbnRzIL2rt723qLrNVUm31r3izqq/ydbY08O1xMSjv+mho7j8tuC52NPaRnJhZ21lbnS1xNDFz6KjrMfrsum/tEZyYWdtZW50cyBBUEkgR3VpZGWhozwvcD4KPHAgY2xhc3M9"note">
提示: 如果你使用的不是最新版本的ADT插件,你的activity可能會看起來不同。確保你已經安裝了最新版的ADT plugin 來完成本次課程。
DisplayMessageActivity
類現在應該是這樣:
public class DisplayMessageActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_message);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() { }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_display_message,
container, false);
return rootView;
}
}
}
如果你使用的IDE不是Eclipse,將DisplayMessageActivity
類更新為上面的代碼。
所有的Activity
的子類都必須實現onCreate()
方法,系統在創建新的activity實例時會調用這個方法。這個方法是你必須通過setContentView()
方法指定activity布局的地方,同時也是你要初始化activity組件的地方。
提示: 如果你使用了非Eclipse的IDE,那麼你的工程不包含activity_display_message
布局文件。沒關系,你馬上會更新這個方法,並不需要用到這個布局文件。
添加標題字符串
如果你使用Eclipse,你可以調到next section(下一節),因為模板已經提供了標題字符串。
如果你使用的是其他的IDE,將新的activity的標題添加到 strings.xml
文件中:
...
My Message
將新Activity添加到Manifest文件中
所有的activity都必須在manifest文件中聲明,AndroidManifest.xml
, 使用
元素。
當你使用的是Eclipse時,它創建了一個默認的實體。如果你使用的不是Eclipse,那麼你需要自己添加清單實體。像下面這樣:
...
android:parentActivityName
聲明了應用邏輯層次中這個activity父activity的名稱。系統會根據這個值來實現默認的導航行為,例如Android4.1或更高版本中的Up
navigation行為。你同樣可以通過使用Support Library 包,然後再
元素中添加這個值。
提示: 你的Android SDK應該已經包含最新版本的Support包。它被包含在ADT Bundle 中,但是如果你使用的不是Eclipse,你需要在Adding Platforms and
Packages 步驟中安裝它。當使用Eclipse的模板時,Support包已經被自動添加到你的項目中了。如果你使用的不是Eclipse,你需要手動添加這個庫島你的項目中,按照setting up the Support
Library 操作完後回到這裡來。
如果你使用Eclipse開發,那麼你現在就能夠運行程序了,但是並不會發生什麼。當點擊Send按鈕時跳轉到新的activity中,但是它使用的是默認的“Hello World”界面。你馬上就會更新這個activity,使用一個自定義的文本視圖來展示,所以如果你使用的不是Eclipse並且不能編譯通過,不用擔心。
接收Intent
每個Activity
都會被Intent
調用,不管是不是用戶操作的。你可以通過調用getIntent()
方法來獲取開啟你的activity的intent,同時或者它裡邊包含的數據。
在 DisplayMessageActivity
類的onCreate()
方法中,獲取通過MainActivity
傳遞過來的信息:
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
顯示信息
要把信息顯示在屏幕上,需要創建一個TextView
控件,然後使用setText()
方法。然後通過setContentView()方法添加這個TextView
作為activity布局的根視圖。
完整的 onCreate()
方法應該像下面這樣:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get the message from the intent
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
// Create the text view
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText(message);
// Set the text view as the activity layout
setContentView(textView);
}
現在你可以運行你的應用了。它啟動之後,輸入信息到文本框中,然後點擊發送,輸入的信息將會出現在第二個activity中。
圖2. app中的兩個activity,運行於android 4.4
完成啦,你已經創建了你的第一個應用!