如何连续检查从活动发送的自定义视图中布尔值的状态?在Android中
我是新来的!我一直在用android开发一个应用程序,但在某个特定点上遇到了麻烦 我有一个活动(活动1),它有四个按钮和一个画布。画布在自定义视图(视图1)中创建,然后通过xml文件将其绘制到活动。我想将画布作为jpg文件保存到我的sd卡中。保存操作必须在按下按钮时进行 我希望它的工作原理如下:单击按钮,布尔值被设置为true。必须将此布尔值从活动1发送到绘制画布的视图1。然后,该视图1将监视布尔值是否设置为true或false。如果布尔值设置为true,则会运行一段代码,将画布保存到jpg 我的问题是监控布尔值。如何在自定义视图(视图1)中连续监视布尔值的状态 活动1:这里是我的主要活动,其中我有一个按钮,当点击时将布尔值设置为true。(我将代码精简到论坛的关键部分) 视图1:这是我创建的用于绘制画布的自定义视图。在这段代码中,我希望持续监视我刚刚在Acitivity 1中创建的布尔值的状态如何连续检查从活动发送的自定义视图中布尔值的状态?在Android中,android,Android,我是新来的!我一直在用android开发一个应用程序,但在某个特定点上遇到了麻烦 我有一个活动(活动1),它有四个按钮和一个画布。画布在自定义视图(视图1)中创建,然后通过xml文件将其绘制到活动。我想将画布作为jpg文件保存到我的sd卡中。保存操作必须在按下按钮时进行 我希望它的工作原理如下:单击按钮,布尔值被设置为true。必须将此布尔值从活动1发送到绘制画布的视图1。然后,该视图1将监视布尔值是否设置为true或false。如果布尔值设置为true,则会运行一段代码,将画布保存到jpg 我
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();
};