การสั่งให้ 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
การสั่งให้ Activity อื่นทำงาน เพื่อนำผลลัพธ์มาใช้ จะแสดงการเขียนคำสั่งใน [url=https://www.mindphp.com/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD/73-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3/2131-class-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3.html]Class[/url] Activity, การเขียนคำสั่งในไฟล์ XML Layout, และการประกาศ Activity ไว้ภายในไฟล์ AndroidManifest.xml
[b]การเขียนคำสั่งภายใน Class Activity[/b]
[code]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]
[code]
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 ( );
}
}
);
}
}[/code]
จาก 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 ที่ได้สั่งให้ทำงาน
[b]การเขียนคำสั่งภายในไฟล์ XML Layout[/b]
[code]<!-- 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]
[code]
<!-- 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>[/code]
element <TextView> มี id คือ label element <Button> มี id คือ choice ซึ่ง id เหล่านี้ถูกใช้อ้างอิงใน Class MainActivity
element <Button> มี id คือ black และ element <Button> มี id คือ white ซึ่ง id เหล่านี้ถูกใช้อ้างอิงใน Class ChoiceActivity
[b]การประกาศ Activity ไว้ภายในไฟล์ AndroidManifest.xml[/b]
[code]<?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>[/code]
มีการประกาศ Activity ชื่อ MainActivity ที่อยู่ใน Package four.me.activity ไว้ภายในไฟล์ AndroidManifest.xml และมีการประกาศ Activity ชื่อ ChoiceActivity ที่อยู่ใน Package four.me.activity ไว้ภายในไฟล์ AndroidManifest.xml
[b]หน้าจอแสดงผลของ การสั่งให้ Activity อื่นทำงาน เพื่อนำผลลัพธ์มาใช้[/b]
[img]http://snap.mindphp.com/index.php?view=2018Jan15_5a5c28e4b04cf[/img]
แสดงหน้าจอของ MainActivity
[img]http://snap.mindphp.com/index.php?view=2018Jan15_5a5c29129cf2f[/img]
แสดงหน้าจอของ ChoiceActivity เมื่อได้ Click ที่ปุ่ม "Select Color" จากหน้าจอของ MainActivity
[img]http://snap.mindphp.com/index.php?view=2018Jan15_5a5c295908890[/img]
แสดงหน้าจอของ MainActivity อีกครั้ง หลังจากที่ได้เลือก Color จากหน้าจอ ChoiceActivity แล้ว ซึ่งสังเกตได้ว่า ข้อความได้เปลี่ยนไป
อ้างอิง : http://www.softmelt.com/article.php?id=116