วันนี้จะมาลองเขียนโปรแกรมรับส่งค่าระหว่าง activity แบบง่ายใน android กันครับ ก่อนอื่นเลยต้องรู้จักกับ activity ก่อน โดย activity เนี่ยถ้าพูดให้เข้าใจง่ายๆ ในตอนนี้อาจจะคิดว่า หนึ่งหน้าจอ คือ 1 activity ก่อนก็ได้ครับ ทีนี้เวลาเราเปิดแอพขึ้นมาหนึ่งแอพเนี่ย มันมีหลายๆ activity โดยเมื่อเปิด activity ขึ้นมาก็คือการ push ลงไปใน stack เมื่อ activity ทำงานเสร็จแล้วก็ pop ออกจาก stack ประมาณนี้อะครับ ถ้าต้องการเข้าใจมากขึ้นแนะนำให้ไปอ่าน ที่นี่ครับ
ทีนี้มาเข้าเรื่องของโปรเจ็คเรา โปรเจ็คนี้จะมี 2 activity โดย MainActivity จะโชว์หน้าจอให้ผู้ใช้กรอกชื่อเข้ามา จากนั้นจะทำการส่งชื่อไป DisplayActivity เพื่อไปแสดงครับ ก่อนอื่นก็สร้างโปรเจ็คขึ้นมาใหม่ครับ
ในที่นี้ใช้ชื่อโปรเจ็คว่า SampleIntent นะครับจะเปลี่ยนไปจากนี้ก็ได้ไม่ว่ากัน ในตอนที่สร้างโปรเจ็คใหม่ผมเลือกให้สร้าง Activity มาให้เลยคือ MainActivity( ชื่ออาจแก้ไขเป็นอันอื่นก็ได้ครับ ) ก็ต้องมาสร้าง activity อีกอันขึ้นมาโดยคลิกขวาที่ src/ชื่อแพคเกจ แล้วเลือก new -> class
จากนั้นก็สร้าง layout ขึ้นมาอีกหนึ่งไฟล์ ( ไฟล์ activity_main.xml ถูกสร้างมาพร้อมกับ MainActivity) โดยใช้ชื่อไฟล์ว่า display_activity.xml
จากนั้นก็มาแก้ไขแต่ละไฟล์เลยครับ
ไฟล์ activity_main.xml
ไฟล์ display_activity.xml
จากนั้นก็สร้าง layout ขึ้นมาอีกหนึ่งไฟล์ ( ไฟล์ activity_main.xml ถูกสร้างมาพร้อมกับ MainActivity) โดยใช้ชื่อไฟล์ว่า display_activity.xml
จากนั้นก็มาแก้ไขแต่ละไฟล์เลยครับ
ไฟล์ activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:hint="Please fill you name"
/>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Go!"
/>
</LinearLayout>
ไฟล์ display_activity.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<TextView
android:id="@+id/textview1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="22sp"
android:textStyle="bold"
android:gravity="center"
android:text="Hello XXX"
/>
<Button
android:id="@+id/btnBack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Back"
/>
</LinearLayout>
ไฟล์ MainActivity.javapackage com.ex.sampleintent;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
public static final String YOUNAME = "youname";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText edit = (EditText) findViewById(R.id.editText1);
Button button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(MainActivity.this, DisplayActivity.class);
intent.putExtra(YOUNAME, edit.getText().toString());
startActivity(intent);
}
});
}
}
package com.ex.sampleintent;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class DisplayActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.display_activity);
Intent intent = getIntent();
String name = intent.getStringExtra(MainActivity.YOUNAME);
TextView textview = (TextView) findViewById(R.id.textview1);
textview.setText(name);
Button btnBack = (Button) findViewById(R.id.btnBack);
btnBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
finish();
}
});
}
}
เสร็จแล้วลอง รันโปรแกรมดูครับผลที่่ได้จะเป็นด้งนี้





