如何连续检查从活动发送的自定义视图中布尔值的状态?在Android中

如何连续检查从活动发送的自定义视图中布尔值的状态?在Android中,android,Android,我是新来的!我一直在用android开发一个应用程序,但在某个特定点上遇到了麻烦 我有一个活动(活动1),它有四个按钮和一个画布。画布在自定义视图(视图1)中创建,然后通过xml文件将其绘制到活动。我想将画布作为jpg文件保存到我的sd卡中。保存操作必须在按下按钮时进行 我希望它的工作原理如下:单击按钮,布尔值被设置为true。必须将此布尔值从活动1发送到绘制画布的视图1。然后,该视图1将监视布尔值是否设置为true或false。如果布尔值设置为true,则会运行一段代码,将画布保存到jpg 我

我是新来的!我一直在用android开发一个应用程序,但在某个特定点上遇到了麻烦

我有一个活动(活动1),它有四个按钮和一个画布。画布在自定义视图(视图1)中创建,然后通过xml文件将其绘制到活动。我想将画布作为jpg文件保存到我的sd卡中。保存操作必须在按下按钮时进行

我希望它的工作原理如下:单击按钮,布尔值被设置为true。必须将此布尔值从活动1发送到绘制画布的视图1。然后,该视图1将监视布尔值是否设置为true或false。如果布尔值设置为true,则会运行一段代码,将画布保存到jpg

我的问题是监控布尔值。如何在自定义视图(视图1)中连续监视布尔值的状态

活动1:这里是我的主要活动,其中我有一个按钮,当点击时将布尔值设置为true。(我将代码精简到论坛的关键部分)

视图1:这是我创建的用于绘制画布的自定义视图。在这段代码中,我希望持续监视我刚刚在Acitivity 1中创建的布尔值的状态

public class MyView extends View {

    boolean saveCanvas = false;

Context context;

public MyView(Context c, AttributeSet as) {
    super(c, as);
    ....    
}

//CONTINUOUSLY MONITOR THE STATE OF THE BOOLEAN
//IF TRUE SAVE PICTURE, ELSE CONTINUE CODE

 @Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {            
    super.onSizeChanged(w, h, oldw, oldh);        
    ....
}

@Override
protected void onDraw(Canvas canvas) {      
    ....
}

}
我希望我的问题在某种程度上是清楚的,希望我提供了足够的代码让别人帮助我。如果需要更多信息,请告诉我


干杯

如果我理解正确,您希望在用户点击按钮后立即将当前画布保存到jpg。在这种交互式情况下,轮询布尔值以进行更改并不是您想要的方式。用户操作引发应用程序操作,因此当用户单击按钮时,您应该告诉视图捕获图片

例如,视图可以有一个方法

  public void capturePicture(){
      // capture the canvas as a jpg
  }
然后在onClick处理程序中,您只需调用此方法

public class ShowImage extends Activity implements ColorPickerDialog.OnColorChangedListener {

 public boolean saveCanvas = false;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.image);

     Button saveButton = (Button)findViewById(R.id.savePic);

        saveButton.setOnClickListener(saveListener);
    }

    private OnClickListener saveListener = new OnClickListener(){
        final MyView theView = (MyView)findViewById(R.id.viewID);
        public void onClick(View v) {
            theView.capturePicture();          
    };

谢谢你的回复!我理解你的意思,并试图实施它。我相信,我现在的问题是在findViewById。运行代码会给我一个NullPointerException。知道为什么会这样吗?问题解决了!findViewById应该放在onClick方法中。非常感谢Andrew G!很高兴收到如此快速的回复。
public class ShowImage extends Activity implements ColorPickerDialog.OnColorChangedListener {

 public boolean saveCanvas = false;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.image);

     Button saveButton = (Button)findViewById(R.id.savePic);

        saveButton.setOnClickListener(saveListener);
    }

    private OnClickListener saveListener = new OnClickListener(){
        final MyView theView = (MyView)findViewById(R.id.viewID);
        public void onClick(View v) {
            theView.capturePicture();          
    };