this ใช้ได้แค่ไหน?


สวัสดีครับ วันนี้เราจะพูดการใช้ this ในส่วนต่างๆของการทำงาน แต่ก่อนจะใช้ this เราจำเป็นต้องมารู้จักกับ Context ซะก่อน คำอธิบายสั้นๆของ Context เป็นตัวเชื่อมระหว่างกับโค้ดกับสิ่งต่างๆในแอปของเรา ในบทความนี้ก็มีตัวอย่างในการใช้ Context ในรูปแบบต่างๆ เช่น เมื่อคลาส MainActivity สืบทอดมาจาก Activity

  public class MainActivity extends AppCompatActivity { 
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);

           //Toast อยู่นอก setOnClickListener
          Toast.makeText(this, "", Toast.LENGTH_SHORT).show();
          Toast.makeText(MainActivity.this, "", Toast.LENGTH_SHORT).show();
          Toast.makeText(getApplicationContext(), "", Toast.LENGTH_SHORT).show();

         TextView click = (TextView)findViewById(R.id.ClickMe);
                      click.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                //Toast อยู่ใน setOnClickListener
                               Toast.makeText(MainActivity.this, "ClickMe!", Toast.LENGTH_LONG).show();
                               Toast.makeText(getApplicationContext(), "ClickMe!", Toast.LENGTH_LONG).show();
                               
                              }
                      });

      }
  }


จากตัวอย่าง เราจะเห็นได้ว่า Toast ที่อยู่ใน setOnClickListener ไม่สามารถใช้ this ในการเจาะจงตัวแปรได้ เนื่องจาก OnClickListener ไม่ได้สืบทอดมาจาก Activity จึงทำให้ไม่สามารถใช้ this ได้
อีกตัวอย่างนึง เมื่อคลาสของเราสืบทอดมาจาก Fragment เราจะไม่สามารถใช้ this ได้เหมือนตัวอย่างข้างต้นแต่เราสามารถใช้ getContext() ได้แทนครับ สำหรับในบทความนี้ไม่ได้ยกตัวอย่างของ Fragment ไว้ยกตัวอย่างในบทความต่อๆไป วันนี้ก็ขอตัวลาไปก่อนหากเนื้อหามีข้อผิดพลาดประการได้ก็ขออภัยด้วยนะครับ และสามารถสอบถามรายละเอียดเพิ่มเติมสามารถคอมเมนต์ได้ที่โพสต์ด้านล่างนะครับ สวัสดีครับ

ความคิดเห็น

บทความที่ได้รับความนิยม