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

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

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

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

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

โพสต์โดย Four » 15/01/2018 11:29 am

การสั่งให้ 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

ย้อนกลับไปยัง

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

กำลังดูบอร์ดนี้: 6 และ บุคคลทั่วไป 0 ท่าน