首页 > 解决方案 > 单击按钮后如何将整数值从一个java文件传递到另一个java文件

问题描述

我正在尝试根据用户输入(即 col、row)创建多个矩形。

我的要求是

1. 我需要在 onclick 到CanvasActivity.java (col,row)之间从MainActivity.java传递两个输入值 (num1,num2)。

2.在我的代码中,我可以在创建应用程序时绘制矩形,但我需要在按下按钮后绘制矩形。----这就完成了

MainActivity.java


import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Canvas;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.FrameLayout;


public class MainActivity extends AppCompatActivity {

   

    CanvasActivity drawView;
    Button mButton;
    EditText mEdit1,mEdit2;
    TextView mText,mText1;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mButton = (Button)findViewById(R.id.button);

        mEdit1 = (EditText)findViewById(R.id.editText1);
        mEdit2 = (EditText)findViewById(R.id.editText2);

        mButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {

                double num1 = Double.parseDouble(mEdit1.getText().toString());
                double num2 = Double.parseDouble(mEdit2.getText().toString());
                double sum = num1 + num2;

                mText = (TextView) findViewById(R.id.textView1);
                mText1 = (TextView) findViewById(R.id.textView3);


                mText.setText("You have entered " + mEdit1.getText().toString() +"x"+ mEdit2.getText().toString()+"Matrix " );
                mText1.setText("Creating " +Double.toString(sum)+" blocks" );
                //setContentView(drawView);


            }
        });

        FrameLayout frameLayout = (FrameLayout) findViewById(R.id.forever);
        frameLayout.addView(new CanvasActivity(this));

    }
}

画布活动.java



import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;

import java.text.BreakIterator;

public class CanvasActivity extends View
{
    // we can directly pass the valuse from this file as bellow
    int left,top=100, width=100,depth=100;
    int i,j,col=3,row=5;



    public CanvasActivity(Context context) { super(context); }

    @Override
    public void onDraw(Canvas canvas)
    {

        Paint paint = new Paint();

        left = 10;
        for (j=0;j<=col;j++)
        {
            for (i=0;i<=row;i++)
            {
                if(i%2 == 0)
                {
                    paint.setColor(Color.RED);
                }
                else
                {
                    paint.setColor(Color.GREEN);
                }
                if ((j%2 == 0) && (i%2 == 1))
                {
                    paint.setColor(Color.BLUE);
                }
                paint.setStyle(Paint.Style.FILL);
                canvas.drawRect((left + (j*width)),(top+(depth*i)),(left + ((j+1)*width)),(top+(depth*(i+1))), paint);
            }
        }
    }
   
}

标签: javaandroidandroid-studio

解决方案


如果要将WidthHeight传递给RectangleView

矩形视图.java



import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;

import java.text.BreakIterator;

public class RectangleViewextends View
{
    // we can directly pass the valuse from this file as bellow
    int left,top=100, width=100,depth=100;
    int i,j,col=3,row=5;



    public RectangleView(Context context, int width, int height) { 
        super(context);
        this.width = width;
        this.height = height;
    }

    @Override
    public void onDraw(Canvas canvas)
    {

        Paint paint = new Paint();

        left = 10;
        for (j=0;j<=col;j++)
        {
            for (i=0;i<=row;i++)
            {
                if(i%2 == 0)
                {
                    paint.setColor(Color.RED);
                }
                else
                {
                    paint.setColor(Color.GREEN);
                }
                if ((j%2 == 0) && (i%2 == 1))
                {
                    paint.setColor(Color.BLUE);
                }
                paint.setStyle(Paint.Style.FILL);
                canvas.drawRect((left + (j*width)),(top+(depth*i)),(left + ((j+1)*width)),(top+(depth*(i+1))), paint);
            }
        }
    }
   
}

MainActivity onClicklistener内部:

RectanlgeView rectangleView = new RectangleView(this, 100, 100);
        frameLayout.addView(rectangleView);

推荐阅读