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

Mobile Application Developing- Android, iOS, Window Phone สอนเขียนโปรแกรมบนมือถือ ระบบปฏิบัติการต่าง แอนดรอยด์ ไอโอเอส วินโดโฟน สอนเขียนโปรแกรมบนมือถือ

Moderator: mindphp, ผู้ดูแลกระดาน

Four
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 813
ลงทะเบียนเมื่อ: 08/01/2018 9:55 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย Four »

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



การเขียนคำสั่งภายใน Class Activity

โค้ด: เลือกทั้งหมด

Package four.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 four.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 btnBlack = ( Button ) this.findViewById ( R.id.black );
 
		btnBlue.setOnClickListener ( new View.OnClickListener ( )
			{
				public void onClick ( View v )
				{
					Intent intent = new Intent ( );
 
					intent.putExtra ( "color", "You select Black Color" );
 
 
					setResult ( RESULT_OK, intent );
 
					finish ( );
				}
			}
		);
 
 
		Button btnWhite = ( Button ) this.findViewById ( R.id.white );
 
		btnWhite.setOnClickListener ( new View.OnClickListener ( )
			{
				public void onClick ( View v )
				{
					Intent intent = new Intent ( );
 
					intent.putExtra ( "color", "You select White Color" );
 
 
					setResult ( RESULT_OK, intent );
 
					finish ( );
				}
			}
		);
	}
}
จาก Class MainActivity คำสั่ง startActivityForResult ( intent, 999 ); จะสั่งให้ Activity อื่นทำงาน และรอผลลัพธ์กลับมาใช้ โดยการส่งค่า requestCode คือ 999 ไปด้วย และ method onActivityResult ( ) เป็น CallBack Method ที่จะทำงานเมื่อ Activity นั้นกลับมาทำงานอีกครั้งหนึ่ง หลังจากที่ได้สั่งให้ Activity อื่นทำงานโดยใช้ method startActivityForResult ( ) ซึ่งคำสั่ง if ( resultCode == RESULT_OK && requestCode == 999 ) จะตรวจสอบเงื่อนไขว่าจะให้เกิดการทำงานใด ๆ จากการส่ง requestCode ใดไป และได้รับ resultCode ใดมา โดย resultCode เป็นค่าที่ส่งกลับมาจาก Activity ที่ได้สั่งให้ทำงาน และ requestCode เป็นค่าที่ได้ส่งไปใน method startActivityForResult ( )
ส่วน Class ChoiceActivity คำสั่ง setResult ( RESULT_OK, intent ); เป็นการส่งค่า 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/white "
		android:layout_below="@id/blue"
		android:layout_width="100dp"
		android:layout_height="wrap_content"
		android:layout_centerHorizontal="true"
		android:layout_centerVertical="true"
		android:text="White" />
 
</RelativeLayout>
element <TextView> มี id คือ label element <Button> มี id คือ choice ซึ่ง id เหล่านี้ถูกใช้อ้างอิงใน Class MainActivity
element <Button> มี id คือ black และ element <Button> มี id คือ white ซึ่ง id เหล่านี้ถูกใช้อ้างอิงใน Class ChoiceActivity



การประกาศ Activity ไว้ภายในไฟล์ AndroidManifest.xml

โค้ด: เลือกทั้งหมด

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
	<application ... >
		<activity android:name="four.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="four.me.activity.ChoiceActivity" ... />
	</application>
</manifest>
มีการประกาศ Activity ชื่อ MainActivity ที่อยู่ใน Package four.me.activity ไว้ภายในไฟล์ AndroidManifest.xml และมีการประกาศ Activity ชื่อ ChoiceActivity ที่อยู่ใน Package four.me.activity ไว้ภายในไฟล์ AndroidManifest.xml



หน้าจอแสดงผลของ การสั่งให้ Activity อื่นทำงาน เพื่อนำผลลัพธ์มาใช้

รูปภาพ
แสดงหน้าจอของ MainActivity

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

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

อ้างอิง : http://www.softmelt.com/article.php?id=116
I am slow walker, but I never walk back. (Abraham Lincoln)
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 29