Android DeveloperDeveloperFeatured

เขียนแอพพลิเคชัน Android การใช้งาน Intent Activity

Intent Activity เป็นส่วนสำคัญส่วนหนึ่งที่ นักพัฒนาแอพพลิเคชันบน Android ใช้กันบ่อยเพราะมันคือการ สั่งให้แอพพลิเคชันของเราเปลี่ยนหน้าแสดงผลไปอีกหน้าและส่งค่าได้อีกด้วย
เริ่มต้นบทเรียนนี้จะใช้ Android Studio ในการพัฒนาเพราะทาง Google ประกาศแล้วว่าไม่เน้น ADT ต่อไปแล้ว ซึ่งปัญหาก็น่าเบื่อตามมาคือ Gradle ที่ดูจะวุ่นวายเสียเหลือเกิน แต่ไม่เป็นไรก็ถือว่าเป็นการอัพเด็ตไปด้วยเลยก็ได้
เปิด Android Studio ขึ้นมาครับ (ขออนุญาติข้ามส่วนของการติดตั้งไปละกัน)

ทำการ New Project ขึ้นมาใหม่เลยครับ

สร้าง Project ใหม่
สร้าง Project ใหม่

ตั้งชื่อ Project ให้เรียบร้อย ตั้งชื่อ Package ให้เรียบร้อย

ตั้งชื่อ Package Name
ตั้งชื่อ Package Name
เลือก Build SDK
เลือก Build SDK

เลือก Layout ของ แอพพลิเคชันของเราเป็น Blank Activity แล้วกด Next และ Finish เพื่อเริ่มต้นเขียนแอพพลิเคชันของเรา โดยหน้าแรกที่เราจะเริ่มต้นทำงานคือ MainActivity ครับ

เลือก Blank Activity Layout
เลือก Blank Activity Layout

สร้าง Button ขึ้นมา 1 ตัว เขียนว่า Next Page แล้วลาก Medium Text ไปวางหน้าจอเขียนว่า “Home Page” เพื่อบอกว่านี่คือหน้าแรก

หน้าแรก
หน้าแรก

ทำการเพิ่มหน้าใหม่ขึ้นมาบน Project ของเรา โดยการคลิกขวาที่ app > New > Activity > Blank Activity

ตามเมนู
ตามเมนู

จะได้ Java Class ใหม่มาด้วยชื่อ MainActivity2 (จะตั้งชื่อใหม่ก็ได้ไม่มีปัญหา)

ตรวจสอบ Class ดีๆ
ตรวจสอบ Class ดีๆ

ทำการลาก Medium Text ตั้งว่า “Second Page” ทำปุ่ม Button มาว่า “Previous” เพื่อคลิกกลับไปหน้า Home Page

หน้าสอง
หน้าสอง

เปิดไฟล์ MainActivity.java มาเขียน Code กันสักหน่อย
เริ่มต้นให้ Import TextView, Button และ Intent Activity ลงไปส่วน Header ก่อน

package daydev.com.intent;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

import android.view.View;
import android.widget.Button;
import android.content.Intent;

หลังจากนั้นทำการ Final หรือ Synthesize ตัว Widget ให้ Code คำสั่งเข้าใจมัน โดยเฉพาะ Button ผมตั้งชื่อว่า TouchNext

TouchNext.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
             
            }
});

ทำการสร้าง setOnClickListener ให้กับ TouchNext ก่อน คำสั่งการเปลี่ยนหน้า Intent Activity คือ

TouchNext.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent nextPage = new Intent(MainActivity.this,MainActivity2.class);
                nextPage.putExtra("PARAM", "Every man fight his own wars");
                startActivity(nextPage);
            }
});

แทรกลงใน TouchNext.setOnClickListener();

เป็นอันจบของหน้าแรก คำสั่ง
Intent nextPage = new Intent(MainActivity.this,MainActivity2.class);
คือการ อ้างให้ MainActivity หน้าแรก เรียกไปยัง MainActivity2 หน้าที่สอง ดังนั้นใช้คำสั่งเดียวกันกับปุ่มของหน้าที่สอง คือ activity_main2 และ MainActivity2.java ก็จะเป็นดังนี้

TouchPrev.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent nextPage = new Intent(MainActivity2.this,MainActivity.class);
                startActivity(nextPage);
            }
        });

หากว่าเราต้องการส่งค่าบางอย่างจากหน้าแรกไปยังหน้าที่ 2 เราจะทำยังไง?

ให้ไปที่ MainActivity.java ก่อนครับ เขียน Code เพิ่มดังนี้

newActivity.putExtra("PARAM", "Every man fight his own wars");

เป็นการส่ง PARAM ซึ่งอาจจะเป็นตัวแปลใดๆ ที่มีค่าภายในคือ String “Every man fight his own wars” ส่งไปยังหน้าที่ 2 การเขียน code ก็เป็นดังนี้

ภาพรวม Code ของ MainActivity.java เป็นดังนี้

package daydev.com.intent;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

import android.view.View;
import android.widget.Button;
import android.content.Intent;


public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final Button TouchNext = (Button) findViewById(R.id.button);
        TouchNext.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent nextPage = new Intent(MainActivity.this,MainActivity2.class);
                nextPage.putExtra("PARAM", "Every man fight his own wars");
                startActivity(nextPage);
            }
        });
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

ดังนั้นหน้าที่ 2 ต้องมี TextView มารับค่า ทำการ Final มันก่อน แล้วก็เขียนคำสั่งรับค่าดังนี้

        final TextView ResultText = (TextView) findViewById(R.id.textView3);
        Intent intent= getIntent();
        final String param_text = intent.getStringExtra("PARAM");
        ResultText.setText(param_text);

 

พร้อมคำสั่งแสดงผล

ภาพรวม Code ของ MainActivity2.java

package daydev.com.intent;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

import android.view.View;
import android.widget.TextView;
import android.widget.Button;
import android.content.Intent;


public class MainActivity2 extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        final Button TouchPrev = (Button) findViewById(R.id.button2);
        final TextView ResultText = (TextView) findViewById(R.id.textView3);
        Intent intent= getIntent();
        final String param_text = intent.getStringExtra("PARAM");
        ResultText.setText(param_text);

        TouchPrev.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent nextPage = new Intent(MainActivity2.this,MainActivity.class);
                startActivity(nextPage);
            }
        });

    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main_activity2, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}
แอพพลิเคชัน
แอพพลิเคชัน

ทดสอบแอพพลิเคชันของเรา

กดปุ่ม Next Page ไปหน้าที่ 2
กดปุ่ม Next Page ไปหน้าที่ 2

 

คำสั่งไม่ได้อยากเลยใช่ไหมครับ บทเรียนต่อไปต่อเนื่องคือการเขียน Intent ร่วมกับ Tab Host Widget ครับ

Asst. Prof. Banyapon Poolsawas

อาจารย์ประจำสาขาวิชาการออกแบบเชิงโต้ตอบ และการพัฒนาเกม วิทยาลัยครีเอทีฟดีไซน์ & เอ็นเตอร์เทนเมนต์เทคโนโลยี มหาวิทยาลัยธุรกิจบัณฑิตย์ ผู้ก่อตั้ง บริษัท Daydev Co., Ltd, (เดย์เดฟ จำกัด)

Related Articles

Back to top button

Adblock Detected

เราตรวจพบว่าคุณใช้ Adblock บนบราวเซอร์ของคุณ,กรุณาปิดระบบ Adblock ก่อนเข้าอ่าน Content ของเรานะครับ, ถือว่าช่วยเหลือกัน