帮我写一个在安卓fragment中调用activity的实例,其中activity的实例不能为空
时间: 2024-05-03 20:19:10 浏览: 128
好的,以下是一个在安卓 Fragment 中调用 Activity 的示例代码:
```java
public class MyFragment extends Fragment {
private MyActivity mActivity;
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof MyActivity) {
mActivity = (MyActivity) context;
} else {
throw new ClassCastException("Activity must implement MyActivity interface");
}
}
@Override
public void onDetach() {
super.onDetach();
mActivity = null;
}
public void doSomethingInActivity() {
if (mActivity != null) {
mActivity.doSomething();
}
}
}
```
在这个示例中,我们定义了一个 MyFragment 类,它持有一个 MyActivity 实例。在 Fragment 的 `onAttach()` 方法中,我们将传入的 `context` 强制转换为 MyActivity 类型,并将其赋值给 mActivity。如果传入的 `context` 不是 MyActivity 类型,则抛出 ClassCastException 异常。
在 Fragment 的 `onDetach()` 方法中,我们将 mActivity 置为 null,以避免内存泄漏。
最后,我们定义了一个 `doSomethingInActivity()` 方法,在其中调用 mActivity 的 `doSomething()` 方法。注意,要先判断 mActivity 是否为空,以避免空指针异常。
希望这个示例能够帮助到你!
阅读全文