如何从另一个名为 MainView 的类中获取填充到 DrawView 类中的矩形数组 r[] 的元素?
我尝试了几种解决方案,但要么我只得到一个填充了 DrawView 类数组的最后一个元素的数组,要么是空指针异常。
例如下面的代码,当我尝试将数组从 DrawView 导出到 MainView(在循环内,r[i]=drawView.r[i])时,它给出了一个完全填充了 DrawView 矩形数组的最后一个元素的数组。但我想将与我在 DrawView 中填写的数组完全相同的数组导出到 MainView。
任何想法我应该改变什么?
public class DrawView extends View {
public Rect [] r = new Rect[81];
Rect r2= new Rect(left, top, right, bottom);
int m=0;
@Override
public void onDraw(Canvas canvas) {
//...........some calculations of variables leftPosFirst etc.......//
int i=0;
while(i<9){
int j=0;
while(j<9){
try{
if(m<81){
r2.left=leftPosFirst+1;
r2.top=(heightRect+heightRect*j)+1;
r2.right=rightPosFirst-1;
r2.bottom=(heightRect+heightRect*(j+1))-1;
r[m]=r2;
m++;
}
} catch (Exception ex){}
j++;
}
i++;
}
}
}
MainView.java 类:
public class MainActivity extends Activity implements OnTouchListener{
DrawView drawView;
int m=0;
Rect[] r = new Rect[81];
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
drawView = new DrawView(this);
setContentView(drawView);
drawView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
switch (arg1.getAction()) {
case MotionEvent.ACTION_DOWN: {
int i;
for (i=0; i<81; i++) {
try{
r[i] = drawView.r[i];
System.out.println(r[i]);
} catch(Exception e){}
}
return true;
}
}
return false;
}
});
}
}