ข้ามไปที่เนื้อหาหลัก

การสร้างปุ่มแชร์ บนมือถือ Android ด้วย ShareActionProvider

ShareActionProvider extends มาจาก Action Provider Class ซึ่งเริ่มจาก Android 4.0 (API 11) ซึ่งเป็นตัวจัดการเรียกแอป social media เพื่อแชร์ข้อมูลไปยังเพื่อน ๆ หรือ กลุ่มเพื่อน โดยเรียกใช้ โซเชียลแอปที่มีในมือถือนั้น ๆ เช่น Line Facebook Email Messenger เป็นต้น แล้วแต่ว่า ในมือถือนั้น ๆ จะติดตั้งแอป อะไรไว้บ้าง ShareActionProvider ก็จะนำมาให้เลือก และจัดการให้ทั้งหมด ดังภาพ ( ภาพที่ 1 แสดงไอคอนแชร์ ภาพที่ 2 เมื่อกดปุ่มแชร์ และภาพที่ 3 เมื่อกดปุ่มอีเมล)


ปัญหาคือ แล้วจะเรียกใช้อย่างไร ปัญหามักจะอยู่ที่การเชื่อมโยงระหว่าง ShareActionProvider กับ menu itemในไฟล์ menu.xml เช่น บอกให้ไปใช้ MenuItemCompat หรือ มีปัญหาการ cast บอกว่า ไม่สามารถ cast จาก ActionProvider ไปยัง ShareActionProvider เป็นต้น 

ในตัวอย่างนี้ ใช้ Android Studio 1.5 และใช้ App Bar ไม่ใช้ Action Bar 

หลักการในการเรียกใช้งาน ShareActionProvider
  1. กำหนด Style ให้ไม่ใช้ Action Bar และเรียกใช้ใน theme ให้สอดคล้องกัน
  2. สร้าง menu item ใน menu.xml โดยไม่ต้องระบุไอคอน เพราะ ShareActionProvider จัดการให้เรียบร้อย แต่ต้องระบุชื่อ และ support class
  3. ใน Activity ที่เรียกใช้งาน ให้ inflate menu และเรียกใช้ ShareActionProvider ใน onCreateOptionsMenu method
  4. ในกรณีที่มี Overflow menu ใน onOptionsItemSelected method
รายละเอียด

ในไฟล์ Styles.xml 

ในไฟล์ AndroidManifest.xml กำหนด Style ดังนี้
android:theme="@style/AppTheme.NoActionBar"

ในไฟล์ String.xml กำหนดชื่อของเมนูแชร์
Share

ในไฟล์ menu.xml ให้กำหนด id ให้ตรงกับที่สร้างใน layout ด้วย ส่วนชื่อ ใช้ชื่ออะไรก็ได้ เผื่อให้สำหรับถ้าเกิดไปแสดงใน Overflow menu จะได้มีชื่อ

    xmlns:bwq="http://schemas.android.com/apk/res-auto" >

   
        android:id="@+id/menu_share"
        android:title="@string/menu_share"
        bwq:actionProviderClass="android.support.v7.widget.ShareActionProvider"
        bwq:showAsAction="always"/>

ในไฟล์  java ของ activity ที่เรียกใช้งาน ให้ import และเรียกใช้งาน ดังนี้

การ import

import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.ShareActionProvider;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;


การเรียกใช้งาน

เรียกใช้งานใน onCreateOptionsMenu method

//ระบุตัวแปร ให้เป็นประเภท ShareActionProvider เพื่อเรียกใช้ภายหลัง
ShareActionProvider mShareActionProvider;

//สร้าง toolbar ใน onCreate method
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
//สำหรับ Android รุ่นเก่า สามารถใช้งานได้
setSupportActionBar(toolbar);

//สร้างเมนู ใน onCreateOptionsMenu method
getMenuInflater().inflate(R.menu.menu_main, menu);

// กำหนดค่าของ item ให้เป็น item ที่ระบุไว้ในไฟล์ menu.xml
MenuItem item = menu.findItem(R.id.menu_share);

// เรียกใช้ ActionProvider และเก็บไว้ในตัวแปร
mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item);
//เมื่อมีการคลิกที่แชร์ จะให้ไปใช้ intent ที่สร้างขี้น
mShareActionProvider.setShareIntent(getDefaultShareIntent());

สร้าง method ที่ชื่อว่า getDefaultShareIntent() ดังนี้

private Intent getDefaultShareIntent(){
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("text/plain");
        intent.putExtra(Intent.EXTRA_SUBJECT, "ทดสอบการแชร์");
        intent.putExtra(Intent.EXTRA_TEXT,"ทดสอบการแชร์ผ่าน app ต่าง ๆ");
        return intent;
    }

ถ้ามีการใช้เมนูใน Overflow menu ให้เรียกใช้จาก onOptionsItemSelected method โดยอาจจะทำเป็น switch case หรือ ใช้ if หลาย ๆ ครั้ง ก็ได้ เช่น

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }


ดาวน์โหลดไฟล์ คลิกที่นี่


ที่มา
http://developer.android.com/reference/android/support/v7/widget/ShareActionProvider.html
http://developer.android.com/training/sharing/shareaction.html
http://stackoverflow.com/questions/19118051/unable-to-cast-action-provider-to-share-action-provider










ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

อุปมา อุปไมย สำนวนการเปรียบเทียบ ของไทย

การเตรียมสอบ ก.พ. ภาค ก. เพื่อสอบบรรจุเข้ารับราชการ มีการทดสอบความสามารถทั่วไป มักจะมี
ข้อสอบที่เกี่ยวกับอุปมาอุปไมย  ข้อสอบมีลักษณะ ให้หาตัวเลือกที่มีความหมาย ความสัมพันธ์คล้ายคลึง หรือเหมือนกับที่โจทย์กำหนดให้มา  หรือเติมข้อความที่มีความหมายสอดคล้องกับคำอุปมาอุปไมยที่ยกมาให้ เป็นต้น ดังนั้น การเข้าใจความหมายของคำอุปมาอุปไมย จึงช่วยให้ทำข้อสอบได้ดียิ่งขึ้น

คำอุปมาอุปไมย หมายถึง ถ้อยคำที่เป็นสำนวนพวกหนึ่ง กล่าวทำนองเปรียบเทียบ ให้เห็นจริง เข้าใจแจ่มแจ้งชัดเจน และสละสลวยน่าฟังมากขึ้น การพูดหรือการเขียน นิยมหาคำอุปมาอุปไมยมาเติมให้ได้ความชัดเจนเกิดภาพพจน์ เข้าใจง่าย เช่น

คนดุ หากต้องการให้ความหมายชัดเจน น่าฟัง และเกิดภาพพจน์ชัดเจนก็ต้องอุปมาอุปไมยว่า “ดุ เหมือน เสือ”
ขรุขระมาก การสื่อความยังไม่ชัดเจนไม่เห็นภาพ ต้องอุปมาอุปไมยว่า “ขรุขระเหมือนผิวมะกรูด” หรือ “ขรุขระเหมือนผิวพระจันทร์” ก็จะทำให้เข้าใจ ความหมายในรูปธรรมชัดเจนมากยิ่งขึ้น

คำอุปมาอุปไมยที่ควรรู้จัก (พิมพ์คำ/ข้อความ แล้วกดปุ่ม "ค้นหา")

แนวข้อสอบ เงื่อนไขสัญลักษณ์

ครั้งที่แล้ว ได้แนะนำหลักการทำ ข้อสอบ ก.พ. ภาค ก. ความสามารถทั่วไป เงื่อนไขสัญลักษณ์ มา แล้ว ถ้าใครยังไม่ได้อ่าน ก็คลิกกลับไปอ่านได้
ความจริง ข้อสอบเงื่อนไขสัญลักษณ์ เป็นข้อสอบไม่ยาก ถ้าเข้าใจหลักการ และมีทักษะความชำนาญ ใจเย็น ๆ อย่าตื่นเต้น โดยเฉพาะการดูเครื่องหมายต่าง ๆ อย่าดูผิด เช่น เครื่องหมายมากกว่า (>) น้อยกว่า (<) เป็นต้น เพราะการแก้ปัญหาโจทย์เงื่อนไขสัญลักษณ์ หรือ inequality ก็คล้ายกับการแก้ปัญหาสมการโดยทั่วไป นั่นเอง คือ สามารถบวก ลบ คูณ หาร ด้วยจำนวนที่เท่ากัน ทั้งสองข้างของเครื่องหมายได้ กลับเศษเป็นส่วนได้ แต่ก็มีบางเรื่อง บางรายละเอียดที่แตกต่างกันบ้าง ซึ่งอ่านได้จาก ข้อสอบ ก.พ. ภาค ก. ความสามารถทั่วไป เงื่อนไขสัญลักษณ์ นะครับ ครั้งนี้ จึงเป็นการนำแนวข้อสอบ เงื่อนไขสัญลักษณ์ เพื่อนำมาฝึกทำให้เกิดทักษะความชำนาญ เพื่อจะได้ทำข้อสอบได้รวดเร็วขึ้น เพราะในห้องสอบ เวลาจัดได้ว่ามีค่ามาก ยิ่งทำเร็วและถูกต้อง ยิ่งดี คำสั่ง

เลือกตอบข้อ 1. ถ้าข้อสรุปทั้งสอง ถูกด้องหรือเป็นจริง ตามเงื่อนไข
เลือกตอบข้อ 2. ถ้าข้อสรุปทั้งลอง ผิดหรือไม่เป็นจริง ตามเงื่อนไข
เลือกตอบข้อ 3. ถ้าข้อ…

เทคนิคการทำ ข้อสอบ อนุกรม ของ ก.พ.

|ประเภทของอนุกรม เทคนิคการทำโจทย์เลข อนุกรม ข้อแนะนำเพิ่มเติม |


ข้อสอบเลขอนุกรม ของ ก.พ. ต้องการวัดความถนัดทางด้านตัวเลข โดยการจัดทำตัวเลขเป็นชุด ๆ ที่มีความสัมพันธ์กันบางอย่าง โดยให้ผู้เข้าสอบได้แสดงความถนัดด้านตัวเลข ในการวิเคราะห์และแก้ปัญหาตามที่โจทย์ระบุ


ประเภทของอนุกรม รูปแบบความสัมพันธ์ของตัวเลขอนุกรมเท่าที่พบบ่อย ๆ มีหลายประเภท เช่น

ก. อนุกรมเชิงเดี่ยว 

ได้แก่ชุดตัวเลขที่เป็นอนุกรมเพียงชุดเดียว เช่น
ค่าของตัวเลขเพิ่มขึ้นต่อเนื่องอย่างเป็นระบบ โดยการบวก หรือ คูณ ตัวเลขก่อนหน้า เช่น บวกด้วยตัวเลขที่เป็นค่าคงที่ เช่น    5   10   15   20   ...?...
บวกด้วยตัวเลขที่มีระบบ เช่น     1    2    5    10   ...?...
คูณด้วยค่าคงที่ เช่น   1   3   9   27   ...?...
มีทั้ง บวก ลบ คูณ หรือหาร สลับกัน เช่น บวกแล้วคูณด้วยค่าคงที่สลับกัน ดังตัวอย่าง  5   7    14   16  32   ...... มีการ บวก ลบ คูณ หรือ หาร ร่วมกัน เช่น  15   31   63   127   255  ...?...
ในตัวอย่างนี้ จะเห็นว่า ตัวเลขตัวแรกคูณด้วย 2 และบวกด้วย 1 จะได้ตัวเลขตัวถัดไป คูณด้วยค่าคงที่ที่เป็นเศษส่วน ให้สังเกตความสัมพันธ์ว่า ตัวเลขก่อนหน้า …