java - 单击按钮后如何将整数值从一个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);
}
}
}
}
解决方案
如果要将Width和Height传递给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);