当前位置:  开发笔记 > 编程语言 > 正文

如果发现条件为真,如何覆盖方法?

如何解决《如果发现条件为真,如何覆盖方法?》经验,为你挑选了1个好方法。

在我的MainActivity类中,attachBaseContext如果在我的视图中按下按钮,我想停止覆盖该方法.

情况如下:

public class MainActivity extends AppCompatActivity {
    boolean value = true;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setting content view and stuff
    }

    //the following should be overridden only if value == true. 
    //I can change the value to false by clicking a button in my view.
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(ZeTarget.attachBaseContext(base,this));
    }

    public void stopOverriding (View view) {
        value = false;
    }

在我看来,我的主活动布局中有一个按钮,可以stopOverriding()在单击时调用该方法:

在我的attachBaseContext()所有活动中,我都有相同的重写方法.我的问题是,是否有可能在单击主活动中的按钮后,我可以attachBaseContext()在所有活动中停止覆盖此方法?



1> T.J. Crowder..:

你不能做出关于方法是否被重写的运行时决定(没有动态生成类,这很复杂[我不知道Dalvik是否支持它]).

只需检查方法中的条件:

protected void attachBaseContext(Context base) {
    if (this.value) {
        // Your special behavior
        super.attachBaseContext(ZeTarget.attachBaseContext(base,this));
    } else {
        // The super's behavior, as though you hadn't overridden the method
        super.attachBaseContext(base);
    }
}

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有