簡體   English   中英

如何在活動和視圖 class 之間傳輸數據?

[英]How to transfer data between an Activity and a View class?

我想將 2 個float值和 1 個boolean值從我的MainActivity class 傳輸到MyCanvas class (這是一個 ZA2F21ED4F8EBC2CBB1DZ 擴展視圖)? 這可能嗎?

我知道這是一個新手問題,但我發現的所有內容都告訴使用IntentBundle ,或者只使用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)

您可以使用settersMyCanvas 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM