[英]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.