[英]How to transfer data between an Activity and a View class?
我想将 2 个float
值和 1 个boolean
值从我的MainActivity
class 传输到MyCanvas
class (这是一个 ZA2F21ED4F8EBC2CBB1DZ 扩展视图)? 这可能吗?
我知道这是一个新手问题,但我发现的所有内容都告诉使用Intent
和Bundle
,或者只使用Bundle.setArguments()
,但显然,它们都不适用于 View class。
谢谢你。
编辑 1
这是我的主要MainActivity
public class MainActivity extends AppCompatActivity {
private MyCanvas myCanvas;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myCanvas = (MyCanvas) findViewById(R.id.canvas);
}
public void btnCalcularOnClick(View v) {
TextView xResultado = (TextView) findViewById(R.id.xResultado);
TextView yResultado = (TextView) findViewById(R.id.yResultado);
EditText txtX = (EditText) findViewById(R.id.txtX);
EditText txtY = (EditText) findViewById(R.id.txtY);
//Comeco da Matematica
float x = Float.parseFloat(txtX.getText().toString());
float y = Float.parseFloat(txtY.getText().toString());
float xResult = 5 * x;
float yResult = 35 * y;
boolean buttonState = true;
}
}
MyCanvas
class 是这样的
public class MyCanvas extends View {
Paint myPaint;
public MyCanvas(Context context, AttributeSet attrs) {
super(context, attrs);
myPaint = new Paint();
}
@Override
public void onDraw(Canvas myCanvas) {
super.onDraw(myCanvas);
myPaint.setColor(Color.BLACK);
myPaint.setStrokeWidth(3);
float cx, cy;
boolean buttonState2;
}
}
在这种情况下,我想转移:
xResult
(MainActivity) -> cx
(MyCanvas)yResult
(MainActivity) -> cy
(MyCanvas)buttonState
(主活动)-> buttonState2
(myCanvas) 您可以使用setters
在MyCanvas
class 中设置所需的值。
像这样在您的MyCanvas
class 中创建方法。
public class MyCanvas extends View {
private float cx, cy;
private boolean buttonState2;
...
public void setResults(float xResult, float yResult) {
cx = xResult;
cy = yResult;
}
public void setButtonState(boolean state) {
buttonState2 = state;
}
}
然后在您的活动中 class
public class MainActivity extends AppCompatActivity {
private MyCanvas myCanvas;
...
public void btnCalcularOnClick(View v){
TextView xResultado = (TextView)findViewById(R.id.xResultado);
TextView yResultado = (TextView)findViewById(R.id.yResultado);
EditText txtX= (EditText)findViewById(R.id.txtX);
EditText txtY= (EditText)findViewById(R.id.txtY);
//Comeco da Matematica
float x = Float.parseFloat(txtX.getText().toString());
float y = Float.parseFloat(txtY.getText().toString());
float xResult = 5 * x;
float yResult = 35 * y;
boolean buttonState = true
myCanvas.setResults(xResult, yResult);
myCanvas.setButtonState(buttonState);
}
}
创建 static 变量并在您的 MyCanvas class 中使用它。
在 MainActivity 中:-
public static float var1 = 1.0f;
public static float var2 = 2.0f;
public static boolean var3 = true;
在您的 MyCanvas class 中:-
private float var1InCanvas = MainActivity.var1;
private float var2InCanvas = MainActivity.var2;
private float var3inCanvas = MainActivity.var3;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.