接下來的一課教大家,開一個新的Activity,並把上一個Activity的Data傳到另一個Activity。
首先,開啟上一課的App,先創建一個Activity,在src資料夾按右鍵,按New來加一個Activity,當然也可以像普通的Java class一樣創建,但記得要創建用戶介面的XML(activity_second.xml),及在AndroidManifest.xml加入新Activity的Permission。
在AndroidManifest.xml中的<application>裡加入:
[code language=”xml”]
<activity
android:name="com.hktecmedia.android.tutorial.SecondActivity"
android:label="@string/title_activity_second" >
</activity>
[/code]
而在新的用戶介面的xml(activity_second.xml),只需要加上TextView的ID,全部源碼如下:
[code language=”xml”]
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".SecondActivity" >
<TextView
android:id="@+id/textView_welcome"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
[/code]
現在就要修改MainActivity及SecondActivity,做到可以把在MainActivity的Data傳到SecondActivity。修改MainActivity的onClick為如下:
[code language=”java”]
@Override
public void onClick(View v) {
String name = etName.getText().toString();
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra(SecondActivity.KEY_NAME, name);
startActivity(intent);
}
[/code]
這裡要留意的是Intent這個Class,Intent其實就是「意圖」的意思,是告訴Android系統你的下一部是做什麼的,將來你也會不停用到Intent的。用Intent的putExtra是把data放到Intent裡,然後在SecondActivity透過KEY_NAME把name的內容拿出來。在這裡你可能會見到eclipse會指出SecondActivity.KEY_NAME有錯誤,在這裡可先不理會,因為我們現在就修改SecondActivity:
[code language=”java”]
import android.os.Bundle;
import android.widget.TextView;
import android.app.Activity;
public class SecondActivity extends Activity {
public static final String KEY_NAME = "name";
private TextView tvWelcome;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Bundle bundle = getIntent().getExtras();
String name = bundle.getString(KEY_NAME);
tvWelcome = (TextView) findViewById(R.id.textView_welcome);
tvWelcome.setText("Hello, " + name);
}
}
[/code]