ก่อนหน้านี้ฉันใช้onAttach (Activity activity)
เพื่อcontext
เข้าFragment
ปัญหา
onAttach (Activity activity)
วิธีการได้รับการคัดค้านใน API ระดับ 23
สารละลาย
ตอนนี้เพื่อรับบริบทใน Fragment
เราสามารถใช้onAttach (Context context)
onAttach (Context context)
context
เรียกว่าเมื่อส่วนที่แนบมาแรกที่ของมัน onCreate(Bundle)
จะถูกเรียกหลังจากนี้
เอกสาร
/**
* Called when a fragment is first attached to its context.
* {@link #onCreate(Bundle)} will be called after this.
*/
@CallSuper
public void onAttach(Context context) {
mCalled = true;
final Activity hostActivity = mHost == null ? null : mHost.getActivity();
if (hostActivity != null) {
mCalled = false;
onAttach(hostActivity);
}
}
รหัสตัวอย่าง
public class FirstFragment extends Fragment {
private Context mContext;
public FirstFragment() {
// Required empty public constructor
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
mContext=context;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rooView=inflater.inflate(R.layout.fragment_first, container, false);
Toast.makeText(mContext, "THIS IS SAMPLE TOAST", Toast.LENGTH_SHORT).show();
// Inflate the layout for this fragment
return rooView;
}
}
บันทึก
นอกจากนี้เรายังสามารถใช้getActivity()
การได้รับcontext
ในFragments
แต่getActivity()
สามารถกลับnull
ถ้าคุณ fragment
ไม่ได้แนบในปัจจุบันผู้ปกครองactivity
,