Android 如何对方法进行全局重写?
我在MainActivity类中声明了一个全局布尔变量,并将其值设置为true:Android 如何对方法进行全局重写?,android,Android,我在MainActivity类中声明了一个全局布尔变量,并将其值设置为true: public class MainActivity extends AppCompatActivity { public boolean inAppTextIntegration = true; //onCreate method and stuff 我的申请表中还有11项活动。并且,在每个活动中,我都会覆盖attachBaseContext方法,如下所示: @Override protected
public class MainActivity extends AppCompatActivity {
public boolean inAppTextIntegration = true;
//onCreate method and stuff
我的申请表中还有11项活动。并且,在每个活动中,我都会覆盖attachBaseContext方法,如下所示:
@Override
protected void attachBaseContext(Context base) {
if(inAppTextIntegration) {
super.attachBaseContext(ZeTarget.attachBaseContext(base, this));
}
else {
super.attachBaseContext(base);
}
}
我已在所有活动中声明了布尔变量inAppTextIntegration
。现在问题的部分是:由于我在所有活动中都在做相同的事情,有可能减少代码吗
目前,我正在使用SharedReferences
在我的MainActivity中存储inAppTextIntegration
的值,然后在其他活动中访问该值,因为我不想在所有活动中手动设置该值
同样,我面临的问题是在所有其他活动中,else
重写方法的一部分正在执行(我正在初始化所有其他活动的onCreate
方法中的inAppTextIntegration
变量。在onCreate方法之外执行此操作会导致空指针异常,因为上下文尚未设置)
因此,我如何通过更改MainActivity中的一个变量来控制所有其他活动对attachBaseContext
的覆盖?(I)创建一个类,该类包含所有活动将具有的所有常用方法
(ii)使该类扩展活动
、应用程序活动
或您所有活动正在扩展的任何内容
(iii)让您的所有活动扩展此课程,而不是它们已经扩展的内容
您完成了:)对于第一部分,代码缩减和分解,定义一个超类来完成这项工作,并扩展所有活动。对于第二部分,直接在
attachBaseContext
中初始化变量的值,因为这是您使用它的地方。使用base
上下文访问响应的预签名。但我所有的活动都已经扩展到了AppCompatActivity。有解决方法吗?您可以创建一个扩展AppCompatActivity的自定义类,并让所有活动扩展自定义类