ในบทความนี้ จะแสดงให้เห็นถึงตัวอย่างการสั่งให้ Activity อื่นทำงาน เพื่อนำผลลัพธ์มาใช้ โดยจะแสดงให้เห็นถึงการเขียนคำสั่งภายใน Class Activity, การเขียนคำสั่งภายในไฟล์ XML Layout, และการประกาศ Activity ไว้ภายในไฟล์ AndroidManifest.xml ดังนี้
การเขียนคำสั่งภายใน Class Activity
ไฟล์ MainActivity.java
package test.me.activity;
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 MainActivity extends Activity
{
public void onCreate ( Bundle savedInstanceState )
{
super.onCreate ( savedInstanceState );
this.setContentView ( R.layout.activity_main );
Button btnChoice = ( Button ) this.findViewById ( R.id.choice );
btnChoice.setOnClickListener ( new View.OnClickListener ( )
{
public void onClick ( View v )
{
Intent intent = new Intent ( MainActivity.this, ChoiceActivity.class );
startActivityForResult ( intent, 999 );
}
}
);
}
protected void onActivityResult ( int requestCode, int resultCode, Intent intent )
{
super.onActivityResult ( requestCode, resultCode, intent );
if ( resultCode == RESULT_OK && requestCode == 999 )
{
String color = intent.getStringExtra ( "color" );
TextView label = ( TextView ) this.findViewById ( R.id.label );
label.setText ( color );
}
}
}
ไฟล์ ChoiceActivity.java
package test.me.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class ChoiceActivity extends Activity
{
public void onCreate ( Bundle savedInstanceState )
{
super.onCreate ( savedInstanceState );
this.setContentView ( R.layout.activity_choice );
Button btnBlue = ( Button ) this.findViewById ( R.id.blue );
btnBlue.setOnClickListener ( new View.OnClickListener ( )
{
public void onClick ( View v )
{
Intent intent = new Intent ( );
intent.putExtra ( "color", "You select Blue Color" );
setResult ( RESULT_OK, intent );
finish ( );
}
}
);
Button btnGreen = ( Button ) this.findViewById ( R.id.green );
btnGreen.setOnClickListener ( new View.OnClickListener ( )
{
public void onClick ( View v )
{
Intent intent = new Intent ( );
intent.putExtra ( "color", "You select Green Color" );
setResult ( RESULT_OK, intent );
finish ( );
}
}
);
}
}
จากคำสั่งข้างต้น สามารถอธิบาย Class MainActivity ได้ดังนี้ คำสั่ง startActivityForResult ( intent, 999 ); ในบรรทัดที่ 27 เป็นการสั่งให้ Activity อื่นทำงาน และรอผลลัพธ์กลับมาใช้ โดยส่งค่า requestCode คือ 999 ไปด้วย และ method onActivityResult ( ) ในบรรทัดที่ 33 เป็น CallBack Method ที่จะทำงานเมื่อ Activity นั้นกลับมาทำงานอีกครั้งหนึ่ง หลังจากที่ได้สั่งให้ Activity อื่นทำงานโดยใช้ method startActivityForResult ( ) ซึ่งคำสั่ง if ( resultCode == RESULT_OK && requestCode == 999 ) ในบรรทัดที่ 37 เป็นการตรวจสอบเงื่อนไขว่าจะให้เกิดการทำงานใด ๆ จากการส่ง requestCode ใดไป และได้รับ resultCode ใดมา โดย resultCode เป็นค่าที่ส่งกลับมาจาก Activity ที่ได้สั่งให้ทำงาน และ requestCode เป็นค่าที่ได้ส่งไปใน method startActivityForResult ( )
และสามารถอธิบาย Class ChoiceActivity ได้ดังนี้ คำสั่ง setResult ( RESULT_OK, intent ); ในบรรทัดที่ 29 หรือบรรทัดที่ 48 เป็นการส่งค่า resultCode กลับไปยัง Activity ที่ได้สั่งให้ทำงาน
การเขียนคำสั่งภายในไฟล์ XML Layout
ไฟล์ activity_main.xml
<!-- activity_main.xml -->
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="- Please Select Color -" />
<Button
android:id="@+id/choice"
android:layout_below="@id/label"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="Select Color" />
</RelativeLayout>
ไฟล์ activity_choice.xml
<!-- activity_choice.xml -->
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:id="@+id/blue"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="Blue" />
<Button
android:id="@+id/green"
android:layout_below="@id/blue"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="Green" />
</RelativeLayout>
จากคำสั่งข้างต้น สามารถอธิบายไฟล์ activity_main.xml ได้ดังนี้ element <TextView> มี id คือ label (ประกาศไว้ในบรรทัดที่ 8) และ element <Button> มี id คือ choice (ประกาศไว้ในบรรทัดที่ 16) ซึ่ง id เหล่านี้ถูกใช้อ้างอิงใน Class MainActivity ข้างต้น
และสามารถอธิบายไฟล์ activity_choice.xml ได้ดังนี้ element <Button> มี id คือ blue (ประกาศไว้ในบรรทัดที่ 8) และ element <Button> มี id คือ green (ประกาศไว้ในบรรทัดที่ 16) ซึ่ง id เหล่านี้ถูกใช้อ้างอิงใน Class ChoiceActivity ข้างต้น
การประกาศ Activity ไว้ภายในไฟล์ AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application ... >
<activity android:name="test.me.activity.MainActivity" ... >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="test.me.activity.ChoiceActivity" ... />
</application>
</manifest>
จากคำสั่งข้างต้น สามารถอธิบายได้ว่า มีการประกาศ Activity ชื่อ MainActivity ที่อยู่ใน Package test.me.activity ไว้ภายในไฟล์ AndroidManifest.xml ในบรรทัดที่ 4 และมีการประกาศ Activity ชื่อ ChoiceActivity ที่อยู่ใน Package test.me.activity ไว้ภายในไฟล์ AndroidManifest.xml ในบรรทัดที่ 11
หน้าจอแสดงผลของ ตัวอย่างการสั่งให้ Activity อื่นทำงาน เพื่อนำผลลัพธ์มาใช้ จากการเขียนคำสั่งข้างต้น
.png)
จากรูปแสดงหน้าจอของ MainActivity

จากรูปแสดงหน้าจอของ ChoiceActivity เมื่อได้ Click ที่ปุ่ม "Select Color" จากหน้าจอของ MainActivity

จากรูปแสดงหน้าจอของ MainActivity อีกครั้ง หลังจากที่ได้เลือก Color จากหน้าจอ ChoiceActivity แล้ว ซึ่งสังเกตได้ว่า ข้อความได้เปลี่ยนไป