在片段中保存活动实例

时间:2013-06-30 04:12:59

标签: android

Fragment有一个名为getActivity()的方法,它返回与当前片段关联的活动。

不使用此方法是否安全,而是在Activity方法中保存onAttach(Activity)个实例?

例如,改为:

public class MyFragment extends Fragment {
    public void foo() {
        ((MainActivity) getActivity()).foo();
    }
}

为:

public class MyFragment extends Fragment {
    private MainActivity activity;
    public void onAttach(Activity activity) {
        this.activity = (MainActivity) activity;
    }
    public void foo() {
        this.activity.foo();
    }
}

这两种方法之间有什么不同吗?哪个更好?

PS。第二种方法的一个好处是,每次使用活动时都不必进行类型转换(如(MainActivity) getActivity())。但我不知道保存活动实例是否安全。

1 个答案:

答案 0 :(得分:1)

是的,没关系。我这样做几乎总是避免每次调用方法getActivity()和转换结果(为了更好的性能和更好的代码)