Reputation: 6197
I am new to Java. This is my code. I create an array in onCreate()
, how can I use it in onDraw()
? Thanks!
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
int Circle_list[] = { Color.BLACK, 20, 20, 50 };
}
private class MyViewCircle extends View {
public MyViewCircle(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.WHITE);
canvas.drawCircle(Circle_list[1], Circle_list[2], Circle_list[3], paint);
}
}
Upvotes: 0
Views: 1770
Reputation: 234795
In class MyCircleView create a method to pass in a circle array.
public class MyViewCircle extends View {
int[] circle_list;
public MyViewCircle(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.WHITE);
canvas.drawCircle(Circle_list[1], Circle_list[2], Circle_list[3],
paint);
}
public void setCircleList(int[] circles) {
circle_list = circles;
}
}
Then in your activity's onCreate method, do the following:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
int Circle_list[] = { Color.BLACK, 20, 20, 50 };
MyViewCircle view = (MyViewCircle) findViewById(R.id.circle_view);
view.setCircleList(Circle_list);
}
(For R.id.circle_view
, substitute whatever id is appropriate for your circle view as defined in the xml.)
Upvotes: 1
Reputation: 12983
If you make Circle_list a member variable of the outer class, you can access that variable from the inner class.
Your code currently has Circle_list declared inside a method, so it's not accessible outside that method. The code below should show you how to do that. Note that your array syntax is not quite right, it should be of the form "type[] var", not "type var[]"
class MyClass extends Something {
//Declare variables here
private int[] Circle_list; //Note the int[], not int var[] as in C/C++
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
int[] Clist = { Color.BLACK, 20, 20, 50 };
Circle_list = Clist;
}
private class MyViewCircle extends View {
public MyViewCircle(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.WHITE);
canvas.drawCircle(Circle_list[1], Circle_list[2], Circle_list[3],
paint);
}
}
Upvotes: 0
Reputation: 9427
Currently, your array is a local variable known only inside 'onCreate' method. You have to change its scope by defining it as an instance variable in order for onDraw to have access to it.
private int[] Circle_list = null ;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Circle_list = new int[] { Color.BLACK, 20, 20, 50 };
}
private class MyViewCircle extends View {
public MyViewCircle(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.WHITE);
canvas.drawCircle(Circle_list[1], Circle_list[2], Circle_list[3],
paint);
}
}
Upvotes: 1