从其他活动中单击按钮时如何强制执行

时间:2018-07-02 10:04:37

标签: java android

当我从其他example.class(活动)单击按钮时,我想toDo()工作App.class(AllActivity)

public class Otherclass extend AppCompatActivity{

    Button example = (Button)findViewById(R.id.option_language);
            example.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    example.isChecked();
                }
            });
}

public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        ToDo();
    }


    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        toDo();
    }

    public void toDo() {
        if(new OtherClass().example.isChecked()) {
           // To do something.
            }
        }
    }
}

我想这样做。但是,我在空对象引用上得到了java.lang.NullPointerException:.isChecked()'

3 个答案:

答案 0 :(得分:0)

这是您实施的不良行为

如果要检查是否单击了示例按钮。只需在您的App类中使用一个布尔标志,然后在单击按钮时设置它的值即可。

如果您希望将此标志从一个活动传递到另一个活动,只需对其使用Intent。

public class Otherclass extend AppCompatActivity{

    Button example = (Button)findViewById(R.id.option_language);
            example.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    App.setIsChecked(true);
                }
            });
}

public class App extends Application {
    public static boolean isChecked = false;
    @Override
    public void onCreate() {
        super.onCreate();
        ToDo();
    }

    public void setIsChecked(boolean isChecked) {
            this.isChecked = isChecked;
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        toDo();
    }

    public void toDo() {
        if(isChecked) {
           // To do something.
            }
        }
    }
}

答案 1 :(得分:0)

public class Otherclass extend AppCompatActivity{
static Boolean checked=false;
Button example = (Button)findViewById(R.id.option_language);
        example.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                checked=true;
            }
     });
}

public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        ToDo();
    }

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    toDo();
}

public void toDo() {
    if(new OtherClass().checked) {
       // To do something.
        }
    }
}

}

这可能会有用 在类中使用静态代码是不好的编码习惯。而是使用意图在类之间进行通信

答案 2 :(得分:0)

您可以在任意按钮单击时调用App类的todo方法

User::find(1)->session()->count();