我在我的 MainActivity 类中声明了一个全局 bool 变量并将其值设置为 true:
public class MainActivity extends AppCompatActivity {
public boolean inAppTextIntegration = true;
//onCreate method and stuff
我的应用程序中还有 11 个 Activity 。而且,在每个 Activity 中,我都将 attachBaseContext 方法重写为:
@Override
protected void attachBaseContext(Context base) {
if(inAppTextIntegration) {
super.attachBaseContext(ZeTarget.attachBaseContext(base, this));
}
else {
super.attachBaseContext(base);
}
}
我已经在所有 Activity 中声明了 bool 变量 inAppTextIntegration
。现在是问题部分:由于我在所有 Activity 中都做同样的事情,是否可以减少代码?
目前,我正在使用 SharedPreferences
将 inAppTextIntegration
的值存储在我的 MainActivity 中,然后在其他 Activity 中访问该值,因为我不想设置在所有 Activity 中手动设置此值。
同样,我面临的问题是在所有其他 Activity 中,正在执行覆盖方法的 else
部分(我正在初始化 inAppTextIntegration
中的变量 所有其他 Activity 的 onCreate
方法。在 onCreate 方法之外执行此操作会导致空指针异常,因为尚未设置上下文)。
那么,如何仅通过更改 MainActivity 中的一个变量 来控制对所有其他 Activity 的 attachBaseContext
的覆盖?
最佳答案
(i) 创建一个类,其中包含所有 Activity 将具有的所有常用方法。
(ii) 使此类扩展 Activity
、AppCompatActivity
或任何您的所有 Activity 正在扩展的内容。
(iii) 让你所有的 Activity 都扩展这个类,而不是它们已经扩展的。
你完成了:)
关于android - 如何对方法进行全局覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34664901/