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

在Android开发中,当API级别超过23时,`onAttach(Activity activity)`方法会被标记为废弃。文章介绍了如何使用`onAttach(Context context)`替代,并针对小米设备的特殊情况,展示了同时保留两个方法的处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

        当代码中出现 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;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值