Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何对方法进行全局重写?_Android - Fatal编程技术网

Android 如何对方法进行全局重写?

Android 如何对方法进行全局重写?,android,Android,我在MainActivity类中声明了一个全局布尔变量,并将其值设置为true: public class MainActivity extends AppCompatActivity { public boolean inAppTextIntegration = true; //onCreate method and stuff 我的申请表中还有11项活动。并且,在每个活动中,我都会覆盖attachBaseContext方法,如下所示: @Override protected

我在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
。现在问题的部分是:由于我在所有活动中都在做相同的事情,有可能减少代码吗

目前,我正在使用
SharedReferences
在我的MainActivity中存储
inAppTextIntegration
的值,然后在其他活动中访问该值,因为我不想在所有活动中手动设置该值

同样,我面临的问题是在所有其他活动中,
else
重写方法的一部分正在执行(我正在初始化所有其他活动的
onCreate
方法中的
inAppTextIntegration
变量。在onCreate方法之外执行此操作会导致空指针异常,因为上下文尚未设置)

因此,我如何通过更改MainActivity中的一个变量来控制所有其他活动对
attachBaseContext
的覆盖?

(I)创建一个类,该类包含所有活动将具有的所有常用方法

(ii)使该类扩展
活动
应用程序活动
或您所有活动正在扩展的任何内容

(iii)让您的所有活动扩展此课程,而不是它们已经扩展的内容


您完成了:)

对于第一部分,代码缩减和分解,定义一个超类来完成这项工作,并扩展所有活动。对于第二部分,直接在
attachBaseContext
中初始化变量的值,因为这是您使用它的地方。使用
base
上下文访问响应的预签名。但我所有的活动都已经扩展到了AppCompatActivity。有解决方法吗?您可以创建一个扩展AppCompatActivity的自定义类,并让所有活动扩展自定义类