我在MainActivity类中声明了一个全局布尔变量,并将其值设置为true:
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
。现在问题部分:由于我在所有活动中做同样的事情,是否可以减少代码?
目前,我使用SharedPreferences
将inAppTextIntegration
的值存储在我的MainActivity中,然后在其他活动中访问该值,因为我不想设置此值手动进行所有活动。
同样,我面临的问题是在所有其他活动中,else
正在执行覆盖方法的一部分(我在inAppTextIntegration
方法中初始化onCreate
变量所有其他活动。在onCreate方法之外执行它会导致空指针异常,因为尚未设置上下文。)
那么,如何通过更改MainActivity中的一个变量,如何在所有其他活动中控制覆盖attachBaseContext
?
答案 0 :(得分:3)
(i)创建一个包含所有活动所有常用方法的类。
(ii)使此课程扩展Activity
,AppCompatActivity
或您所有活动所延伸的内容。
(iii)让您的所有活动扩展此课程而不是他们已经扩展的课程。
你已经完成了:)