a、爲按鈕添加事件響應
爲了將Activity A上的數據能傳送,我們得先響應按鈕事件,
在activity_main.xml佈局文件中button元素添加上android:onClick屬性,修改後如下:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:onClick="sendMessage" />
android:onClick屬性值爲sendMessage,"sendMessage"爲MainActivity.java類中的一個方法,用來響應Button的點擊事件。
在MainActivity.java文件中加上方法sendMessage,如下:
/** 該方法將在用戶點擊了send Button時調用*/
public void sendMessage(View view) {
// Do something in response to button
}
爲了響應onClick,該方法必須滿足下列條件:
方法必須爲public的;
返回值必須爲空(void)
有且僅有一個View類型的參數(該參數即爲當前OnClick事件的源source)
b、構建意圖(Intent)
這裏我們在上面的sendMessage方法中添加一個意圖(Intent),來啓動封裝我們要發送的數據;如下:
//DisplayMessageActivity.class 這裏表示要啓動該Activity
Intent intent = new Intent(this, DisplayMessageActivity.class);
//通過findViewById方法來從佈局文件中找到對應的viwe對象
EditText editText = (EditText) findViewById(R.id.edit_text);
String message = editText.getText().toString();//獲取eidtText的數據
intent.putExtra(EXTRA_MESSAGE, message);//設置到intent對象上
startActivity(intent);//調用startActivity方法執行intent來啓動DisplayMessageActivity
EXTRA_MESSAGE 爲我們爲當前消息設置的一個key值,該值用來唯一標識當前消息,其他Activity就可以通過這個標識key來獲取消息內容。
這裏我們在當前Activity中定義爲:
public final static String EXTRA_MESSAGE = "com.example.helloword.MESSAGE";
在前面加上包前綴,主要是用於唯一標示該key。
c、創建第二個Activity即DisplayMessageActivity
在工具欄中選擇new 按鈕,在彈出的對話框中選擇Android ->Android Activity,如圖:
點擊next,如圖:
工程名處Project我們選擇HelloWord
Activity Name處輸入:DisplayMessageActivity
Layout Name輸入activity_diskplay_message
Title 即爲Activity顯示時的標題欄類容,這裏默認的是顯示DisplayMessageActivity.
點擊Finish,成功創建好了DisplayMessageActivity.java文件和對應的佈局文件。
打開DisplayMessageActivity.java文件,此時我們看到系統自動把對應的layout設置上了,onCreate初始代碼爲:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_message);
}
d、解析並呈現Intent內容
在onCreate中,通過方法getIntent來獲取並解析出從ActivityMain 中傳來的數據。
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
數據獲取到後,我們通過一個TextView將其顯示出來;
修改後的onCreate方法如下:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 從intent中獲取數據
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText(message);
//設置textView爲當前的contentView
setContentView(textView);
}
e、在AndroidManifest.xml中聲明新加的Activity,即DisplayMessageActivity
前面說了,任何要需要再系統中呈現的Activity都必須在AndroidManifest.xml中通過activity元素進行聲明。
打開AndroidManifest.xml文件,我們看到DisplayActivity系統已經爲我們聲明瞭,如果系統沒有自動添加,則需要我們手動加上:
<activity
android:name="com.example.helloword.DisplayMessageActivity"
android:label="@string/title_activity_display_message" >
</activity>
f、運行程序
現在就可以運行我們的程序了。運行後,在文本輸入框中輸入Hello world 點擊send按鈕,則會跳轉到另外一個Activity去,並顯示出了Hello world,如圖: