ตัวอย่างการใช้งาน :: ตัวอย่างการสั่งให้ Activity อื่นทำงาน เพื่อนำผลลัพธ์มาใช้

ในบทความนี้ จะแสดงให้เห็นถึงตัวอย่างการสั่งให้ Activity อื่นทำงาน เพื่อนำผลลัพธ์มาใช้ โดยจะแสดงให้เห็นถึงการเขียนคำสั่งภายใน Class Activity, การเขียนคำสั่งภายในไฟล์ XML Layout, และการประกาศ Activity ไว้ภายในไฟล์ AndroidManifest.xml ดังนี้

การเขียนคำสั่งภายใน Class Activity
  • package nutt.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 );
  • }
  • }
  • }
  • package nutt.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 -->
  • <?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 -->
  • <?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="nutt.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="nutt.me.activity.ChoiceActivity" ... />
  • </application>
  • </manifest>
จากคำสั่งข้างต้น สามารถอธิบายได้ว่า มีการประกาศ Activity ชื่อ MainActivity ที่อยู่ใน Package nutt.me.activity ไว้ภายในไฟล์ AndroidManifest.xml ในบรรทัดที่ 4 และมีการประกาศ Activity ชื่อ ChoiceActivity ที่อยู่ใน Package nutt.me.activity ไว้ภายในไฟล์ AndroidManifest.xml ในบรรทัดที่ 11

หน้าจอแสดงผลของ ตัวอย่างการสั่งให้ Activity อื่นทำงาน เพื่อนำผลลัพธ์มาใช้ จากการเขียนคำสั่งข้างต้น
หน้าจอแสดงผลของ ตัวอย่างการสั่งให้ Activity อื่นทำงาน เพื่อนำผลลัพธ์มาใช้
จากรูปแสดงหน้าจอของ MainActivity
หน้าจอแสดงผลของ ตัวอย่างการสั่งให้ Activity อื่นทำงาน เพื่อนำผลลัพธ์มาใช้
จากรูปแสดงหน้าจอของ ChoiceActivity เมื่อได้ Click ที่ปุ่ม "Select Color" จากหน้าจอของ MainActivity
หน้าจอแสดงผลของ ตัวอย่างการสั่งให้ Activity อื่นทำงาน เพื่อนำผลลัพธ์มาใช้
จากรูปแสดงหน้าจอของ MainActivity อีกครั้ง หลังจากที่ได้เลือก Color จากหน้าจอ ChoiceActivity แล้ว ซึ่งสังเกตได้ว่า ข้อความได้เปลี่ยนไป

0 ความคิดเห็น:

Copyright © 2012 DroidDevp.