【发布时间】:2014-11-25 07:50:44
【问题描述】:
我想避免重复需要在 Activity 上使用方法的代码(比如 getActivity().getString()) 。
创建一个保留对 Activity 的引用的对象似乎不起作用(对象一直在重新创建,并且在需要时对 Activity 的任何引用都是空的。)
// This won't work, it seems
public class MyUtils {
public MyUtils(Activity activity) {
this.activity = activity;
}
public String getSomeStuff() {
return this.activity.getString(R.string.foo);
}
}
// In a Fragment created by the activity
MyUtils utils = new MyUtils(getActivity());
myUtils.getSomePref();
那么如何避免重复代码呢? 是否有一种“安全”的方式来分解需要 Activity 的代码? 您是否应该将所有代码放在 Activity 本身中,并从 Fragments 中进行转换?
编辑:为了澄清我的问题,我特别在寻找一种在片段之间共享代码的方法,这些代码在 Activity 中显示为选项卡(使用 TabsPagerAdapter)。 他们都需要访问一些保存为几个首选项的结构化数据。 当片段不可见时,他们还需要在 onSharedPreferencesChanged 事件处理程序中访问此数据。 根据我的经验,每当我停止和恢复应用程序、在片段之间导航、更改首选项等......我的活动的所有变量都是空的。
【问题讨论】:
-
为什么每次活动恢复时不刷新变量?片段支持
onCreate、onResume等方法 -
还有,这真的是代码重复吗?
-
除了
getString(),你还有什么真实的例子吗?这真的不是代码重复。您只是将getActivity().getString()函数与另一个同样重复的函数进行了不必要的包装。 -
好吧,在我的例子中,我使用了许多 SharedPreferences,并且我想包装基于软编码字符串获取 stome 首选项的代码。所以是的,这是为了避免代码重复。
标签: android