ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 161|ตอบกลับ: 0

[B4A] การสร้างหน้าจอบนมือถือได้มากกว่า 1 หน้าจอ โดยสามารถส่งค่าบางอย่างไปได้

[คัดลอกลิงก์]

246

กระทู้

350

โพสต์

2890

เครดิต

ผู้ดูแลระบบ

Rank: 9Rank: 9Rank: 9

เครดิต
2890



แอดมินขออธิบายให้เข้าใจง่ายๆสำหรับ Activity ที่อยู่บน B4A หรือ Basic for Android เปรียบได้เหมือนกับเป็นฟอร์ม 1 ฟอร์ม โดยสามารถวาง Control ต่างๆ ได้ 2 แบบ คือการใช้ Designer และการสร้างแบบ Run Time หรือการเขียนด้วยโค้ดเพื่อสร้าง Control ขึ้นมา โดยฟอร์มหลักเราจะเรียกชื่อว่า Main ส่วนฟอร์มอื่นๆก็จะเป็น Activity ซึ่งก็ขึ้นอยู่กับที่เราจะตั้งชื่อเอาเอง ก็เหมือนๆกับฟอร์มใน Visual Basic นั่นเอง ... สำหรับบทความชุดนี้แอดมินจะใช้ Designer เพื่อให้ทุกๆท่านๆได้เข้าใจไม่ยากล่ะกัน ...

เริ่มต้นในการสร้าง Designer ... จาก IDE ให้เลือก Designer


การบันทึก Designer ...  


การ AddView โดยเลือก ListView ให้ขึ้นมาแสดงผลใน Designer ในแบบเต็มหน้าจอ มีลูกศรซ้ายขวา บนล่าง เหมือนกับ Anchor เพื่อขยายระยะไปตามความกว้าง ยาวของจอมือถือ ...


การประกาศตัวแปร Control โดยที่จากส่วนของการเขียนโค้ด หรือ IDE เราจะต้องเลือก Activity ที่ต้องการเอาไว้ก่อน แล้วคลิ๊กเมาส์ขวาตัว Control ทำการ Generate ตัวแปรขึ้นมาตามภาพ ชื่อตัวแปรก็จะไปปรากฏยัง Activity ตามที่เรากำหนด ...
กรณีที่ Control แบบคงที่ ไม่มีการเปลี่ยนแปลงค่าใดๆ หรือไม่จำเป็นต้องเรียกใช้งาน เช่น ป้ายบอก หรือ Label ก็ไม่ต้องทำการประกาศตัวแปรก็ได้ ...


ส่วนที่ต้องทำการเรียกใช้งาน Designer ...
  1. Sub Activity_Create(FirstTime As Boolean)
  2.         'Do not forget to load the layout file created with the visual designer. For example:
  3.         Activity.LoadLayout("main")
  4.         Activity.Title="Main Layout"
  5. End Sub
คัดลอกไปที่คลิปบอร์ด

Designer ในส่วนของอีก Activity ... (layout1)


Layout1 จะเป็นการกำหนดไฟล์รูปภาพไปยัง ImageView เพื่อจะทำเป็นปุ่มให้ถอยหลังกลับไป Main Activity ...


โดยจะใช้โค้ดใน Activity1 ดังนี้ ... กลับไปยัง Activity Main และจบการทำงานของตัวมันเอง
  1. Sub ImageView1_Click
  2.         StartActivity(Main)
  3.         Activity.Finish
  4. End Sub
คัดลอกไปที่คลิปบอร์ด

การสร้าง Activity ขึ้นมาใหม่ ...


กลับมาที่ Activity หลัก ก็คือ Main ...


เมื่อสร้างรายการข้อมูลตัวอย่างให้กับ ListView1 (Main) ...
  1. Sub Activity_Create(FirstTime As Boolean)
  2.         For i = 1 To 100
  3.                 ListView1.AddSingleLine("Item #" & i)
  4.         Next
  5. End Sub
คัดลอกไปที่คลิปบอร์ด

เหตุการณ์ในการคลิ๊กแต่ละแถวรายการใน ListView1 (Main) ... ก็จะเรียกไปยัง CallSubDelay2("ชื่อ Activity", "โปรแกรมย่อยในการรับค่า", "ค่าที่ส่งไป") ...
  1. Sub ListView1_ItemClick (Position As Int, Value As Object)
  2.         '// This call will bring Main to front and call GetResult.
  3.         CallSubDelayed2(Activity1, "GetResult", Value)
  4. End Sub
คัดลอกไปที่คลิปบอร์ด

โปรแกรมย่อยในการรับค่าใน Activity ...
  1. Sub GetResult(Result As String)
  2.         Label1.Text = "You choose: " & Result
  3. End Sub
คัดลอกไปที่คลิปบอร์ด

ทำการรันโปรแกรม ...
ก่อนจะทำการสั่งรันโปรแกรม ต้องทำการ Restart ADB Server เพื่อทำการติดต่อกับ Emulator ... ในที่นี้แอดมินใช้ BlueStacks ...


ทดสอบการ Connect กับ Emulator ...


หากเรามีการเปลี่ยนแปลงแก้ไขโค้ด ก่อนที่จะทำการรันโปรแกรม ต้อง Clean Project ก่อน เพื่อทำการ Compile ใหม่อีกครั้ง ...


การสั่ง Run ใน Debug Mode ...


เมื่อ Main Activity ทำงาน ...


เมื่อลองทดสอบคลิ๊กแถวรายการที่ 6 มันก็จะเข้าไปทำงานยัง Activity1 ...


มาดูโค้ดในส่วนของ Main ...
  1. #Region  Project Attributes
  2.         #ApplicationLabel: Two Activities
  3.         #VersionCode: 1
  4.         #VersionName:
  5.         'SupportedOrientations possible values: unspecified, landscape or portrait.
  6.         #SupportedOrientations: unspecified
  7.         #CanInstallToExternalStorage: False
  8. #End Region

  9. #Region  Activity Attributes
  10.         #FullScreen: False
  11.         #IncludeTitle: True
  12. #End Region

  13. Sub Process_Globals
  14.         'These global variables will be declared once when the application starts.
  15.         'These variables can be accessed from all modules.

  16. End Sub

  17. Sub Globals
  18.         'These global variables will be redeclared each time the activity is created.
  19.         'These variables can only be accessed from this module.
  20.         Private Kanit As CustomFonts
  21.         Private ListView1 As ListView
  22. End Sub

  23. '// https://www.b4x.com/android/help/views.html
  24. Sub Activity_Create(FirstTime As Boolean)
  25.         'Do not forget to load the layout file created with the visual designer. For example:
  26.         Activity.LoadLayout("main")
  27.         Activity.Title="Main Layout"
  28.         '// Set Own Font.
  29.         Kanit.Initialize("Kanit-Regular.ttf")
  30.         Kanit.SetCustomFontsToAllViews(Activity)
  31.         For i = 1 To 100
  32.                 ListView1.AddSingleLine("Item #" & i)
  33.         Next
  34. End Sub

  35. Sub ListView1_ItemClick (Position As Int, Value As Object)
  36.         '// This call will bring Main to front and call GetResult.
  37.         CallSubDelayed2(Activity1, "GetResult", Value)
  38. End Sub

  39. Sub Activity_Resume

  40. End Sub

  41. Sub Activity_Pause (UserClosed As Boolean)

  42. End Sub
คัดลอกไปที่คลิปบอร์ด

มาดูโค้ดในส่วนของ Activity1 ...
  1. #Region  Activity Attributes
  2.         #FullScreen: False
  3.         #IncludeTitle: True
  4. #End Region

  5. Sub Process_Globals
  6.         'These global variables will be declared once when the application starts.
  7.         'These variables can be accessed from all modules.

  8. End Sub

  9. Sub Globals
  10.         'These global variables will be redeclared each time the activity is created.
  11.         'These variables can only be accessed from this module.
  12.         Private Panel1 As Panel
  13.         Private Label1 As Label
  14.         Private Label2 As Label
  15.         Private ImageView1 As ImageView
  16. End Sub

  17. Sub Activity_Create(FirstTime As Boolean)
  18.         'Do not forget to load the layout file created with the visual designer. For example:
  19.         Activity.LoadLayout("layout1")
  20.         Dim MyFont As Typeface
  21.         MyFont = Typeface.LoadFromAssets("Kanit-Regular.ttf")
  22.         Label1.Typeface=MyFont
  23.         Label2.Typeface=MyFont
  24.         Label1.Text="You Choose : " & GetResult("")
  25.         
  26. End Sub

  27. Sub GetResult(Result As String)
  28.         Label1.Text = "You choose: " & Result
  29. End Sub

  30. Sub ImageView1_Click
  31.         StartActivity(Main)
  32.         Activity.Finish
  33. End Sub

  34. Sub Activity_Resume

  35. End Sub

  36. Sub Activity_Pause (UserClosed As Boolean)

  37. End Sub
คัดลอกไปที่คลิปบอร์ด

ดาวน์โหลดโค้ดต้นฉบับ B4A ได้จากที่นี่ ....


ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

x
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2020-7-14 23:13 , Processed in 0.259425 second(s), 4 queries , File On.

Powered by Discuz! X3.3 R20170401, Rev.54

© 2001-2017 Comsenz Inc.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้