0
如何从另一个名为MainView的类中获取填充DrawView类的矩形数组r []的元素?如何调用一个数组填充另一个类的元素?
我已经尝试了几种解决方案,但是我只能得到一个数组,填充DrawView类数组或nullpointer异常的最后一个元素。
E.g.下面的代码,当我尝试从DrawView中将数组导出到MainView(在循环中,r [i] = drawView.r [i])时,它会给出一个完全填充DrawView矩形数组的最后一个元素的数组。但我想导出到MainView完全相同的数组,我填写在DrawView中。
任何想法我应该改变什么?
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;
}
});
}
}
这不能与一个存取方法来实现? – christopher 2013-05-05 11:14:59
改变你的凌乱'while'为'for'首先...和'如果(m <81)'无用... – johnchen902 2013-05-05 11:28:07
@ johnchen902不是没用的...看看他是如何在'onDraw'中创建rect数组的,重置'm' ...没有测试他会有'IndexOutOfBoundsException'。这么丑陋:是的,但没用:不:-) – 2013-05-05 11:29:48