PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum

การรับค่า intent และการแสดงค่า ใน activity ตอนที่ 2

11 April 2015 By


เนื้อหาต่อเนื่องจากตอนที่แล้ว
 
การเพิ่ม activity ให้ app ใน android studio ตอนที่ 1 
http://www.ninenik.com/content.php?arti_id=616 via @ninenik
 
การรับค่า intent 

ถ้า activity ใดๆ มีการใช้งานกับ Intent แล้ว 
เราสามารถใช้ Intent เพื่อเรียกใช้งาน activity ด้วยคำสั่ง getIntent() รวม
ถีงการใช้งานข้อมูลที่ส่งผ่านทาง Intent ได้
 
1. ที่โฟลเดอร์ java เปิดไฟล์ DisplayMessageActivity.java  เพื่อแก้ไข code
 
13
 
2. ภายใน onCreate() method ให้ลบ code ต่อไปนี้ออก
 
setContentView(R.layout.activity_display_message);
 
    คำสั่งส่วนนี้คือให้ไปเรียก layout มาแสดง แต่เราไม่ต้องการ ดังนั้นลบออกก่อน
 
3. เรียกใช้ Intent แล้วกำหนดตัวแปร local
 
Intent intent = getIntent();
 
public class DisplayMessageActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // รับค่า message จาก intent
        Intent intent = getIntent();
        
    }

...................
.............
.......
 
 
    * ถ้าขึ้นข้อความสีแดง อย่าลืม import  class
    (ใน android stuido คลิกที่คำนั้น แล้วกด Alt+Enter แล้วเลือก import class บางครั้งระบบจะ
    ไม่ขึ้นให้เลือก import class แต่ได้ทำการ import ให้แล้ว เป็นในลักษณะ ช่วยลดขึ้นตอนกรณีทำซ้ำๆ)
 
4. รับค่าจาก ข้อความที่ส่งมาจาก MyActivity class ผ่าน intent ด้วยคำสั่ง getStringExtra() 
 
String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE);
 
public class DisplayMessageActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // รับค่า message จาก intent
        Intent intent = getIntent();
        String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE);
    }

...................
.............
.......
 
    การทำงานก็คือใช้คำสั่ง getStringExtra() ดึงค่าจาก EXTRA_MESSAGE
    ใน MyActivity ที่ส่งผ่านมาทาง intent มาไว้ในตัวแปร instance ชื่อ message
 
 
การแสดงข้อความ
 
ก่อนที่เราจะแสดงข้อความที่ได้รับมาจาก intent เราต้องมี view object ที่จะแสดงก่อน
ให้กับ DisplayMessageActivity แต่ว่าเราจะไม่ใช่จาก layout xml ไฟล์ ซึ่งก็ได้ลบไปแล้ว
เราจะใช้วิธีสร้าง view object ด้วย code java แทน ดังนี้
 
1. ใน onCreate() method ให้สร้าง TextView object.
 
TextView textView = new TextView(this);
 
    กำหนด instance ชื่อ textView 
 
public class DisplayMessageActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // รับค่า message จาก intent
        Intent intent = getIntent();
        String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE);

        // สร้าง text view
        TextView textView = new TextView(this);
    }
...................
.............
.......
 
    * ถ้าขึ้นข้อความสีแดง อย่าลืม import  class
 
2. กำหนดขนาด และข้อความที่ต้องการแสดง ด้วยคำสั่ง setTextSize() และ setText() ตามลำดับ
 
textView.setTextSize(40);
textView.setText(message);
 
    ให้ขนาดเท่ากับ 40 (หน่วยเริ่มต้นถ้าไม่ได้กำหนดจะเป็น "sp" หรือ "scaled pixels".)
    และแสดงข้อความจากตัวแปร message
 
public class DisplayMessageActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // รับค่า message จาก intent
        Intent intent = getIntent();
        String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE);

        // สร้าง text view
        TextView textView = new TextView(this);
        textView.setTextSize(40);
        textView.setText(message);
    }
...................
.............
.......

 
 
3. เพิ่ม TextView ไปใน root view ของ activity layout ด้วยการส่งเข้าไปแสดงด้วยคำสั่ง setContentView().
 
setContentView(textView);
 
    แสพง textView ที่สร้าง ใน root view ของ activity
 
public class DisplayMessageActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // รับค่า message จาก intent
        Intent intent = getIntent();
        String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE);

        // สร้าง text view
        TextView textView = new TextView(this);
        textView.setTextSize(40);
        textView.setText(message);

        // แสพง textView ที่สร้าง ใน root view ของ activity
        setContentView(textView);
    }

...................
.............
.......


    code DisplayMessageActivity.java ทั้งหมด 
 
package com.example.ninenik.study001;

import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;


public class DisplayMessageActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // รับค่า message จาก intent
        Intent intent = getIntent();
        String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE);

        // สร้าง text view
        TextView textView = new TextView(this);
        textView.setTextSize(40);
        textView.setText(message);

        // แสพง textView ที่สร้าง ใน root view ของ activity
        setContentView(textView);
    }


    @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_display_message, 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);
    }
}
 
 
เท่านี้เราสามารถทพสอบ run app ได้แล้ว 
 
การ run app จาก android studio ผ่าน Emulator 
http://www.ninenik.com/content.php?arti_id=613 via @ninenik
 
ตัวอย่างผลลัพธ์
 
     

 

Tags:: android studio android intent

เนื้อหาพิเศษ เฉพาะสำหรับสมาชิก

กรุณาล็อกอิน และลงชื่อติดตาม


สมัครสมาชิกได้ที่        ล็อกอินได้ที่   





URL สำหรับอ้างอิง