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