How to refresh Array data when we go to another activity
<p><img src="http://i.stack.imgur.com/AL4zp.png" alt="Emulator image"></p>

<p>In my application i am using A to Z alphabets as images and getting the dragged and dropped.I am saving these images in a array.And the problem arrises when i click back button or clear button in which back takes the activity to previous menu and clear redirects the activity again to same page so ultimately alphabet images takes its initial position.
Actually when i press clear and back button its overriding the images onto the same array and hence since the array size is only 26 .I am getting ArrayIndexOutOfBoundException.Please assist me how do i refresh or remove the array images before its the activity is navigated to another screen so that the next time this view is opened array data is initialized afresh.</p>

<p>I am providing both class One where i had declared and defined the array and another class where i am accessing the above class view and has button to navigate to another activities onClick.Please assist me.Thanx.</p>

<p>DrawView Class:</p>

<pre><code> public class DrawView extends View {
   public ColorBall[] colorballs = new ColorBall[26]; // array that holds the balls
   public int balID = 0; // variable to know what ball is being dragged

    public DrawView(Context context) {
        super(context);
        setFocusable(true); //necessary for getting the touch events

        // setting the start point for the balls
        Point point1 = new Point();
        point1.x = 50;
        point1.y = 0;
        Point point2 = new Point();
        point2.x = 150;
        point2.y = 0;
        Point point3 = new Point();
        point3.x = 250;
        point3.y = 0;
        Point point4 = new Point();
        point4.x = 350;
        point4.y = 0;
        Point point5 = new Point();
        point5.x = 400;
        point5.y = 0;
        Point point6 = new Point();
        point6.x = 50;
        point6.y = 50; 
        Point point7 = new Point();
        point7.x = 150;
        point7.y =50; 
        Point point8 = new Point();
        point8.x = 250;
        point8.y = 50; 
        Point point9 = new Point();
        point9.x = 350;
        point9.y = 50;
        Point point10 = new Point();
        point10.x = 400;
        point10.y = 50;
        Point point11 = new Point();
        point11.x = 50;
        point11.y = 100; 
        Point point12 = new Point();
        point12.x = 150;
        point12.y = 100;
        Point point13 = new Point();
        point13.x = 250;
        point13.y = 100;
        Point point14 = new Point();
        point14.x = 350;
        point14.y = 100;
        Point point15 = new Point();
        point15.x = 400;
        point15.y = 100;
        Point point16 = new Point();
        point16.x = 50;
        point16.y = 150;
        Point point17 = new Point();
        point17.x = 150;
        point17.y = 150;
        Point point18 = new Point();
        point18.x = 250;
        point18.y = 150;
        Point point19 = new Point();
        point19.x = 350;
        point19.y = 150;
        Point point20 = new Point();
        point20.x = 400;
        point20.y = 150;
        Point point21 = new Point();
        point21.x = 50;
        point21.y = 200;
        Point point22 = new Point();
        point22.x = 150;
        point22.y = 200;
        Point point23 = new Point();
        point23.x = 250;
        point23.y = 200;
        Point point24 = new Point();
        point24.x = 350;
        point24.y = 200;
        Point point25 = new Point();
        point25.x = 400;
        point25.y = 200;
        Point point26 = new Point();
        point26.x = 200;
        point26.y = 250; 
        // declare each ball with the ColorBall class
        colorballs[0] = new ColorBall(context,R.drawable.e, point1);
        colorballs[1] = new ColorBall(context,R.drawable.l, point2);
        colorballs[2] = new ColorBall(context,R.drawable.z, point3);
        colorballs[3] = new ColorBall(context,R.drawable.h, point4);
        colorballs[4] = new ColorBall(context,R.drawable.a, point5);
        colorballs[5] = new ColorBall(context,R.drawable.c, point6);
        colorballs[6] = new ColorBall(context,R.drawable.y, point7);
        colorballs[7] = new ColorBall(context,R.drawable.s, point8);
        colorballs[8] = new ColorBall(context,R.drawable.b2, point9);
        colorballs[9] = new ColorBall(context,R.drawable.o, point10);
        colorballs[10] = new ColorBall(context,R.drawable.n, point11);
        colorballs[11] = new ColorBall(context,R.drawable.v, point12);
        colorballs[12] = new ColorBall(context,R.drawable.i, point13);
        colorballs[13] = new ColorBall(context,R.drawable.x, point14);
        colorballs[14] = new ColorBall(context,R.drawable.f, point15);
        colorballs[15] = new ColorBall(context,R.drawable.j, point16);
        colorballs[16] = new ColorBall(context,R.drawable.t, point17);
        colorballs[17] = new ColorBall(context,R.drawable.q, point18);
        colorballs[18] = new ColorBall(context,R.drawable.w, point19);
        colorballs[19] = new ColorBall(context,R.drawable.u, point20);
        colorballs[20] = new ColorBall(context,R.drawable.k, point21);
        colorballs[21] = new ColorBall(context,R.drawable.r, point22);
        colorballs[22] = new ColorBall(context,R.drawable.p, point23);
        colorballs[23] = new ColorBall(context,R.drawable.d, point24);
        colorballs[24] = new ColorBall(context,R.drawable.m, point25);
        colorballs[25] = new ColorBall(context,R.drawable.g, point26);

    }

    // the method that draws the balls
    @Override protected void onDraw(Canvas canvas) {
        //canvas.drawColor(0xFFCCCCCC);     //if you want another background color       

        //draw the balls on the canvas
        for (ColorBall ball : colorballs) {
            canvas.drawBitmap(ball.getBitmap(), ball.getX(), ball.getY(), null);
          }

    }

    // events when touching the screen
    public boolean onTouchEvent(MotionEvent event) {
        int eventaction = event.getAction(); 

        int X = (int)event.getX(); 
        int Y = (int)event.getY(); 

        switch (eventaction ) { 

        case MotionEvent.ACTION_DOWN: // touch down so check if the finger is on a ball
            balID = 0;
            for (ColorBall ball : colorballs) {
                // check if inside the bounds of the ball (circle)
                // get the center for the ball
                int centerX = ball.getX() + 25;
                int centerY = ball.getY() + 25;

                // calculate the radius from the touch to the center of the ball
                double radCircle  = Math.sqrt( (double) (((centerX-X)*(centerX-X)) + (centerY-Y)*(centerY-Y)));

                // if the radius is smaller then 23 (radius of a ball is 22), then it must be on the ball
                if (radCircle &lt; 23){
                    balID = ball.getID();
                    break;
                }

                // check all the bounds of the ball (square)
                //if (X &gt; ball.getX() &amp;&amp; X &lt; ball.getX()+50 &amp;&amp; Y &gt; ball.getY() &amp;&amp; Y &lt; ball.getY()+50){
                //  balID = ball.getID();
                //  break;
                //}
              }

             break; 


        case MotionEvent.ACTION_MOVE:   // touch drag with the ball
            // move the balls the same as the finger
            if (balID &gt; 0) {
                colorballs[balID-1].setX(X-25);
                colorballs[balID-1].setY(Y-25);
            }

            break; 

        case MotionEvent.ACTION_UP: 
            // touch drop - just do things here after dropping

             break; 
        } 
        // redraw the canvas
        invalidate(); 
        return true; 

    }

}
</code></pre>

<p>Class Quiz1:</p>

<pre><code>public class Quiz1 extends Activity{
    LinearLayout lLayout;
    TextView tView;
    DrawView d;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.e);
       ImageView v=(ImageView)findViewById(R.id.imageView1);
        v.setScaleType(ImageView.ScaleType.FIT_XY);
        ImageView v1=(ImageView)findViewById(R.id.imageView2);
        v1.setAlpha(60);

        ImageButton i3=(ImageButton)findViewById(R.id.imageButton3);
        i3.setOnClickListener(new OnClickListener(){

            public void onClick(View v) {
                // TODO Auto-generated method stub

                Toast.makeText(getApplicationContext(), "'Home.'", Toast.LENGTH_SHORT).show();
Intent i=new Intent(Quiz1.this,LiamaLearningActivity.class);
startActivity(i);
            }
});
        ImageButton i2=(ImageButton)findViewById(R.id.imageButton2);
           i2.setOnClickListener(new OnClickListener(){

                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    Toast.makeText(getApplicationContext(), "'Cleared.'", Toast.LENGTH_SHORT).show();
    Intent i=new Intent(Quiz1.this,Quiz1.class);
    startActivity(i);
                }});

           ImageButton i1=(ImageButton)findViewById(R.id.imageButton1);
           i1.setOnClickListener(new OnClickListener(){

                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    Toast.makeText(getApplicationContext(), "'Sample Quizzes.'", Toast.LENGTH_SHORT).show();
    Intent i=new Intent(Quiz1.this,Quiz.class);
    startActivity(i);
                }});
        lLayout = new LinearLayout(this);
        lLayout.setOrientation(LinearLayout.VERTICAL);
        //-1(LayoutParams.MATCH_PARENT) is fill_parent or match_parent since API level 8
        //-2(LayoutParams.WRAP_CONTENT) is wrap_content
        lLayout.setLayoutParams(new LayoutParams(
LayoutParams.MATCH_PARENT, 
LayoutParams.MATCH_PARENT));
       /* tView = new TextView(this);
        tView.setText("Hello, This is a view created programmatically! " +
                  "You CANNOT change me that easily :-)");
        tView.setLayoutParams(new LayoutParams(
LayoutParams.MATCH_PARENT, 
LayoutParams.WRAP_CONTENT));
        lLayout.addView(tView);*/
        d=new DrawView(this);
        d.setLayoutParams(new LayoutParams(
                LayoutParams.MATCH_PARENT, 700));
        lLayout.addView(d);
        AbsoluteLayout abs=(AbsoluteLayout)findViewById(R.id.a1);
        abs.addView(lLayout);
        //setContentView(lLayout);

    super.onDestroy();
    }
}
</code></pre>

<p>Logcat:</p>

<pre><code>12-06 16:29:45.564: E/AndroidRuntime(278): java.lang.ArrayIndexOutOfBoundsException
12-06 16:29:45.564: E/AndroidRuntime(278):  at com.avigma.learning.DrawView.onTouchEvent(DrawView.java:176)
12-06 16:29:45.564: E/AndroidRuntime(278):  at android.view.View.dispatchTouchEvent(View.java:3766)
12-06 16:29:45.564: E/AndroidRuntime(278):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
12-06 16:29:45.564: E/AndroidRuntime(278):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
12-06 16:29:45.564: E/AndroidRuntime(278):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
12-06 16:29:45.564: E/AndroidRuntime(278):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
12-06 16:29:45.564: E/AndroidRuntime(278):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
12-06 16:29:45.564: E/AndroidRuntime(278):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1671)
12-06 16:29:45.564: E/AndroidRuntime(278):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
12-06 16:29:45.564: E/AndroidRuntime(278):  at android.app.Activity.dispatchTouchEvent(Activity.java:2086)
12-06 16:29:45.564: E/AndroidRuntime(278):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1655)
12-06 16:29:45.564: E/AndroidRuntime(278):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1785)
12-06 16:29:45.564: E/AndroidRuntime(278):  at android.os.Handler.dispatchMessage(Handler.java:99)
12-06 16:29:45.564: E/AndroidRuntime(278):  at android.os.Looper.loop(Looper.java:123)
12-06 16:29:45.564: E/AndroidRuntime(278):  at android.app.ActivityThread.main(ActivityThread.java:4627)
12-06 16:29:45.564: E/AndroidRuntime(278):  at java.lang.reflect.Method.invokeNative(Native Method)
12-06 16:29:45.564: E/AndroidRuntime(278):  at java.lang.reflect.Method.invoke(Method.java:521)
12-06 16:29:45.564: E/AndroidRuntime(278):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-06 16:29:45.564: E/AndroidRuntime(278):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-06 16:29:45.564: E/AndroidRuntime(278):  at dalvik.system.NativeStart.main(Native Method)
</code></pre>
