public class FragmentSetting extends PreferenceFragment {}
@Override
public void onAttach(Context pContext) {
//not working
super.onAttach(pContext);
if (pContext instanceof AppCompatActivity){
mActivity = (AppCompatActivity)pContext;
}
}
@Override
public void onAttach(Activity pActivity) {
//is working
super.onAttach(pActivity);
mActivity = pActivity;
}
最近发现PreferenceFragment中public void onAttach(Context pContext) {}并不执行,是Android的一个BUG。
但是public void onAttach(Activity pActivity) {}又不建议使用了。
/**
* Called when a fragment is first attached to its context.
* {@link #onCreate(Bundle)} will be called after this.
*/
public void onAttach(Context context) {
mCalled = true;
final Activity hostActivity = mHost == null ? null : mHost.getActivity();
if (hostActivity != null) {
mCalled = false;
onAttach(hostActivity);
}
}
/**
* @deprecated Use {@link #onAttach(Context)} instead.
*/
@Deprecated
public void onAttach(Activity activity) {
mCalled = true;
}
希望google的工程师们进行修复,目前还是使用public void onAttach(Activity pActivity) {}
来解决现有的问题,也可以两种方法都使用。
文章评论