ขอถามเรื่องการ ส่งค่ากลับไปมาระหว่าง activity โดยที่เวลาเปลี่ยนหน้าส่งค่ากลับมา ให้มันไม่ต้องสร้าง class ใหม่
คือโปรแกรมที่ผมทำคือทำเป็นโปรแกรมแต่งเสียงดนตรีเป็นห้องๆ ผมติดปันหาเรื่องของการสร้างห้อง
ให้มันสร้างได้หลายๆห้องใน 1 class
ผมสามารถสร้างได้แค่ 1 ห้อง แล้วไปทำหน้าอื่น กลับมา ห้องดนตรีที่เคยสร้างไว้มันหายไป เหมือนมันสร้าง class ใหม่ ขึ้นมา ผมเลยไม่สามารถสร้างห้องดนตรีให้มันได้มากกว่า 1 ห้องเพราะทุกครั้งที่ไปทำหน้าอื่น กลับมา ที่สร้างไว้หายทุกครั้ง
code ของผมตอนนี้ *มี 2 หน้านะสร้างค่าไปมา
setContentView(R.layout.guitar); //หน้า 1 หน้าที่ส่งค่า
public void onClick(View v) {
Intent intent = new Intent(guitar.this, main.class); //เปลี่ยนไปยังหน้าสร้างห้องดนตรี
int num = 1;
intent.putExtra("roomg", num); //ส่งค่าเลข 1 เพื่อเชคว่าเป็นห้องที่ 1
startActivity(intent);
}
setContentView(R.layout.main) //หน้าที่ 2 หน้ารับค่าเพื่อสร้างห้องดนตรี
Bundle bb = getIntent().getExtras();
if (bb != null)
{
final int g = bb.getInt("roomg");
if(g == 1) // รับค่าที่ส่งมาเพื่อเช็คว่าเป้นห้องดนตรีที่เท่าไร
{
btnGuitar1.setBackgroundResource(drawable.an_button1); // เปลีย่นรูปว่าห้องนี้ถูกสร้างแล้ว
}
}
ImageButton btnGuitar1 = (ImageButton)findViewById(R.id.ImageButton03);
btnGuitar1.setOnClickListener( new OnClickListener() {
public void onClick(View v) {
int n1 = 1; //เพื่อเช็คว่าโดนกดเลือกสร้างห้องจากห้องที่เท่าไร
Intent intent = new Intent(main.this, guitar.class);
intent.putExtra("keyg", n1);
startActivity(intent);
}
} ) ;
code ผมเป็น code ลองส่งค่าง่ายๆเพื่อเปลีย่นรูปเพื่อบอกว่าได้สร้างห้องดนตรีขึ้นมาแล้ว 1 ห้อง
แต่ผมต้องการสร้างห้องที่ 2 แต่พอสร้างห้องแรกที่สร้างไว้มันหายไป ใครพอรู้วิธีแก้ไขบ้างครับ
หรือผมต้องใช้คำสั่ง startActivityForResult(..,..) ในการเปลีย่นหน้าไปอีก class
แต่ผมไม่ทราบวิธีใช้ ว่ามันมีหลักการใช้ยังไง ใครรู้วิธีใช้หรือมีวิธีอื่น ช่วยผมหน่อยครับ
ผมต้องรีบทำโปรเจค แต่ยังส่งค่าไม่ได้เลยครับ T_T
ขอบคุณทุกคนล่วงหน้ามากครับ
เท่าที่ดูก็ถูกแล้วคับ code มันทำการ new intent ขึ้นมาใหม่ เพราะฉะนั้นค่าเก่ามันหายแน่ๆ คับ ยังไง ลองสร้าง static class ขึ้นมาเพื่อเก็บค่า น่าจะง่ายกว่านะคับ
http://developer.android.com/resources/tutorials/notepad/notepad-ex2.html
Android จะมีการยิง Intent อีกแบบที่ สามารถส่งค่ากลับได้นะครับ ลองหาดู
เป็นเหมือนกันเลย อยากรู้เหมือนกันค่ะว่าต้องทำยังไง
แนะนำให้ใช้
startActivityForResult(intent, int)
ต่างจากเดิมเนื่องจากมันสามารถรับผลลัพธ์ของ activity ที่รันได้
และเมื่อทำงานแล้วมันจะกลับไปยังจุดที่เรียกครับ
หลังจากเรียกใช้ method นี้แล้วเราต้องมีอีก method คือ
protected void onActivityResult(int, int, Intent)
สำหรับรับค่าที่ activity จะส่งมาให้ครับ รายละเอียดลองไปอ่านดู ใน eclipse ไม่ก็ developer android
นะครับ
edit
แก้พารามิเตอร์นิสหน่อยพอดีก็อปจากโค้ดของตัวเองมาครับ