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

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

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

Post Reply
Four
PHP Super Hero Member
PHP Super Hero Member
Posts: 813
Joined: 08/01/2018 9:55 am

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

Post by Four » 15/01/2018 11:29 am

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



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

Code: Select all

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 );
		}
	}
}

Code: Select all

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

Code: Select all

<!-- 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>

Code: Select all

<!-- 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

Code: Select all

<?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 อื่นทำงาน เพื่อนำผลลัพธ์มาใช้

Image
แสดงหน้าจอของ MainActivity

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

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

อ้างอิง : http://www.softmelt.com/article.php?id=116
I am slow walker, but I never walk back. (Abraham Lincoln)

Post Reply

Return to “Mobile Application Developing- Android, iOS”

Users browsing this forum: No registered users and 3 guests