应对 onAttach(Activity activity)方法被废弃的问题

         当需要把片段(fragment)关联到活动(Activity)时,可能要调用onAttach()方法,来告诉片段接收活动传来的更新信息。比方说,页面A是多个健身项目的列表,希望点击某个项目,右侧跳出详细的锻炼动作页面B;点击下一个项目,页面B相应的更新为新选项目的锻炼动作。

应对 onAttach(Activity activity)方法被废弃的问题_第1张图片

        当代码中出现 public void onAttach(Activity activity) {} 方法, 并选择API23以上版本时,Android Studio会自动提示该方法被废弃了(deprecated)。

原来时用onAttach(Context context)替换了旧方法。

以Head First Android开发一书中Workout项目为例(297页)

import android.app.Activity;
...
public class WorkoutListFragment extends ListFragment {
....
@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    this.listener = (WorkoutListListener) activity;
}

在API版本23以上,需导入android.content.Context类,并修改代码如下

import android.content.Context;

...

public class WorkoutListFragment extends ListFragment {
....

@Override
    public void onAttach(Context context){
        super.onAttach(context);
        this.listener = (WorkoutListListener) context;
    }

         也有特例。比如stackoverflow中有人提到,小米部分机型不支持 onAttach(Context context)方法,因此,代码中又必须把旧方法添加进来,写成:

import android.app.Activity;

import android.content.Context;

...

public class WorkoutListFragment extends ListFragment {
....

 @SuppressWarnings("deprecation")
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        this.listener = (WorkoutListListener) activity;
    }

@Override
    public void onAttach(Context context){
        super.onAttach(context);
        this.listener = (WorkoutListListener) context;
    }

你可能感兴趣的:(android编程,android)