用接口回调的方法帮我写一下在Fragment中使用getActivity避免为空的代码
时间: 2024-05-04 11:16:19 浏览: 100
Fragment 和Activity 通过回调交互
好的,以下是使用接口回调的方式在Fragment中获取Activity并避免空指针异常的代码:
首先,定义一个接口,用于传递Activity实例:
```
public interface OnAttachActivityListener {
void onAttachActivity(Activity activity);
}
```
然后,在Fragment中定义一个成员变量和一个方法,用于保存和获取Activity实例:
```
public class ExampleFragment extends Fragment implements OnAttachActivityListener {
private Activity mActivity;
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof OnAttachActivityListener) {
((OnAttachActivityListener) context).onAttachActivity(getActivity());
}
}
@Override
public void onAttachActivity(Activity activity) {
mActivity = activity;
}
// 使用 mActivity 代替 getActivity(),避免出现空指针异常
// ...
}
```
接着,在宿主Activity中实现这个接口,在 onAttachActivity 方法中获取到Activity实例并传递给Fragment:
```
public class ExampleActivity extends AppCompatActivity implements OnAttachActivityListener {
// ...
@Override
public void onAttachActivity(Activity activity) {
// 将Activity实例传递给Fragment
ExampleFragment fragment = new ExampleFragment();
fragment.onAttachActivity(activity);
}
// ...
}
```
这样,就能够在Fragment中安全地使用 mActivity 代替 getActivity(),避免空指针异常了。
阅读全文