พอดีว่า ผมเขียนโปรแกรมบน Android แบบแยกกหน้าต่างๆออกเป็น TabLayout แยกกออกเป็นสามอัน ตามรูปครับ
ซึ่งแต่ล่ะ Tab จะใช้ Layout คนล่ะไฟล์กัน(ไฟล์.xmlที่อยู่ในโฟรเดอร์ layout)
จากนั้น ผมทำการเขียน class java ขึ้นมาอีกเพื่อเรียกใช้ Class Activity ของแต่ล่ะ Tab
เช่น
SetupActivity sa = new SetupActivity();//เรียก Class SetupActivity(Tabที่ 3)
แล้วเรียก Function setFalse(); ที่มีอยู่ใน Class SetupActivity เพื่อ setEnabled(false)
ให้กับ button ที่อยู่ใน Class SetupActivity
แล้วมันก็เด้ง Error ตามรูปครับ ผมลองดูค่าของ button ปรากฏว่ามันเป้น null ครับ
ผมเลยลองหลายๆวิธีเช่น ประกาศ button ให้เป็น public ใน Class SetupActivity เช่น
public Button connectBtn;
ใน onCreate ก็เรียก connectBtn = (Button)findViewById(R.id.connectBtn);
แล้ว เรียกแบบ sa.connectBtn.setEnabled(false); มันก็ไม่ได้
ทำยังไงผมถึงจะเรียกใช้งาน TextView button หรือ อะไรต่างๆ ของ class อื่นๆได้ครับ
คือผมพยายามจะแยกส่วนโปรแกรมออกเป็น Tab ซึ่งมีสาม Tab ซึ่งพอกดปุ่ม Connect ของ Tab ที่3 จะไปเรียกไฟล์ Class Connect ที่ผมเขียนไว้ ซึ่งถ้า Connect ผ่าน มันจะ set button ให้เท่ากับ False เพื่อไม่ให้กดได้ แต่ มันเรียกช้ามไปแล้ว Set ค่าให้ไม่ได้ครับ
รบกวนขอคำแนะนำอีกสักกระทู้
อยากเห็นว่า connectServer ใน class ConnectServer เรียกใช้ setFalse ยังไงอ่ะครับ พอจะให้ดูได้ไหมครับ
นี้ Class ConnectServer ตัดส่วนที่เรียก Class SetupActivity มาให้ดูเพราะถ้าเอาทั้งหมดมันเยอะ
public class ConnectServer {
}
ส่วนนี้เป็น Class SetupActivity ที่ผมเรียกมาจาก Class ConnectServer ซึ่ง Class ConnectServer ก็ถูกเรียกมาจาก Class SetupActivity นี้แหละครับ ลักษณะเหมือนการเรียกไปเรียกกลับ
public class SetupActivity extends Activity {
}
เอาวิธีแก้แบบลัดเลยนะครับ ถ้าอยากได้คำอธิบายเดี๋ยวเย็นๆ มาเพิ่มให้ครับ
{syntaxhighlighter brush:java}
ConnectServer(String server,int port,String user,SetupActivity that) {
...
this.sa = that;
}
{/syntaxhighlighter}
{syntaxhighlighter brush:java}
SetupActivity sa = new SetupActivity();//Class SetupActivity
{/syntaxhighlighter}
เหลือ
{syntaxhighlighter brush:java}
SetupActivity sa;//Class SetupActivity
{/syntaxhighlighter}
ก็น่าจะได้หละครับ
แล้ว Constructor ตัวนี้่ ( SetupActivity that ) ผมต้องส่งอะไรจาก Class SetupActivity เข้ามาครับ
ต้องเรียก ประมานนี้หรือปล่าวครับ
ผมเรียกตามในรูปครับ แล้วมันก็เด้ง Error มาตามรูป
อุปส์ ตกไปอีกขั้นตอนครับ ตรงนั้นใส่ this ครับ
{syntaxhighlighter brush:java}
ConnectServer conS = new ConnectServer(serverName,serverPort,userName,this);
{/syntaxhighlighter}
ไม่ต้อง new sa ไปให้ แต่ส่งตัวเองเข้าไปแทนครับ
ลองแล้วครับ เหมือนจะดีขึ้น เพราะ item ต่างๆของ Class SetupActivity ดูจะไม่ใช่ค่าว่างแล้ว
แต่พอกด Connect มันก็เด้ง แบบนี้
พอมาดู ตรง Fucntion ที่ใช้เรียก Class ConnectServer ก็จะเป้นแบบนี้ครับ
แล้วผมต้องเรียก ไปหา Class อื่นด้วยครับ ไม่ใช่แค่เรียกใช้ Class SetupActivity อย่างเดี่ยว
เหมือนกับว่า Class SetupActivity เรียกหา Class ConnectServer จากนั้น ConnectServer ก็เรียกไปหา Class PrivateChatZone และ Class MainActivity ด้วยเพื่อสั่งการทำงานใน 2 classนี้
พอมีวิธีแนะนำไหมครับ
ทำคล้ายเดิมเลยครับ ส่ง SetupActivity ตัวเดิมไปให้คลาสที่ต้องใช้เลยครับ
คือตอนนี้ เรียกแบบนี้
ConnectServer conS = new ConnectServer(serverName,serverPort,userName,this);
มันยังไม่ได้เลยครับ มันขึ้น Error ตามรูปข้างบน
มันบอกไหมครับว่าเกิด Exception อะไร
ไม่ได้บอกครับ
แต่เท่าที่ อ่านจากเวปนอกดู รู้สึกว่า ถ้าต้องการเรียก ข้าม Activity Class ต้องใช้
Intent intent = new Intent(Activity1.this,Activity2.class);
startActivityForResult(Intent,IPC_ID);
ประมานนี้ครับ
ตามตัวอย่างนี้ครับ
ตอนนี้ก็พอจะเรียกได้แล้ว แต่มีปัญหา ตรงที่ ว่า Class มันตีกันมั่วๆ อยุ่ ทำให้ ตัว Connection ผมมัน งงๆ กำลังแกะๆ แงะๆ งมๆอยู่ครับ
ครับ ผมก็เคยเขียน Android App อยู่ตัวนึง แต่ไม่เคยใช้หลาย Activity หน่ะครับ