ลองใช้อินเตอร์เฟส
ส่วนใด ๆ ที่ควรส่งผ่านข้อมูลกลับไปยังกิจกรรมที่บรรจุควรประกาศอินเตอร์เฟสเพื่อจัดการและส่งผ่านข้อมูล จากนั้นตรวจสอบให้แน่ใจว่ากิจกรรมที่มีของคุณใช้อินเทอร์เฟซเหล่านั้น ตัวอย่างเช่น:
JAVA
ในส่วนของคุณประกาศอินเทอร์เฟซ ...
public interface OnDataPass {
public void onDataPass(String data);
}
จากนั้นเชื่อมต่อการใช้งานคลาสที่มีอยู่ของอินเทอร์เฟซกับส่วนในวิธี onAttach เช่น:
OnDataPass dataPasser;
@Override
public void onAttach(Context context) {
super.onAttach(context);
dataPasser = (OnDataPass) context;
}
ภายในแฟรกเมนต์ของคุณเมื่อคุณต้องการจัดการกับการส่งผ่านข้อมูลเพียงแค่เรียกมันบนวัตถุ dataPasser:
public void passData(String data) {
dataPasser.onDataPass(data);
}
ในที่สุดในกิจกรรมที่มีของคุณซึ่งใช้ OnDataPass
...
@Override
public void onDataPass(String data) {
Log.d("LOG","hello " + data);
}
Kotlin
ขั้นตอนที่ 1 สร้างส่วนต่อประสาน
interface OnDataPass {
fun onDataPass(data: String)
}
ขั้นตอนที่ 2 จากนั้นเชื่อมต่อการใช้งานคลาสที่มีอยู่ของอินเทอร์เฟซกับส่วนในวิธี onAttach (YourFragment) เช่น:
lateinit var dataPasser: OnDataPass
override fun onAttach(context: Context) {
super.onAttach(context)
dataPasser = context as OnDataPass
}
ขั้นตอน 3. ภายในแฟรกเมนต์ของคุณเมื่อคุณต้องการจัดการกับการส่งผ่านข้อมูลเพียงแค่เรียกมันบนวัตถุ dataPasser:
fun passData(data: String){
dataPasser.onDataPass(data)
}
ขั้นตอน 4. ในที่สุดในกิจกรรมของคุณใช้ OnDataPass
class MyActivity : AppCompatActivity(), OnDataPass {}
override fun onDataPass(data: String) {
Log.d("LOG","hello " + data)
}