Переход от SurfaceView не в основное занятие


У меня есть упражнение, которое использует surfaceview в качестве своего представления контента для рисования некоторых растровых изображений и выполнения анимации, что является лучшим способом управления запуском нового раунда события для загрузки нового набора растровых изображений для следующего раунда в этом потоке surfaceview или что является лучшим способом переключения с потока surfaceview, обратно к основной игровой деятельности после завершения раунда. То, что я пробовал до сих пор, ниже фрагмент из класса surfaceview, где все нарисовано.

              if(isCollided(i)){

            if(imgList.indexOf(imgList.get(i)) == 0){

                    activity.runOnUiThread(new Runnable() {
                        public void run() {
                            Toast.makeText(context, "Correct!", Toast.LENGTH_SHORT).show();
                            Intent i = new Intent(context, AnimeAction.class);
                            context.startActivity(i);
                        }});


            }
1 2

1 ответ:

Вы не должны этого делать:

MainActivity activity = new MainActivity();

Вместо этого попробуйте это :

MainActivity activity = MainActivity.this;


Что касается размещения нового набора растровых изображений, я сделал это так в своем приложении:

public class OurView extends SurfaceView implements Runnable
    {
        Thread t=null;
        SurfaceHolder holder;
        boolean ok;

        public OurView(Context context)
        {
            super(context);
            holder=getHolder();

        }
        public void run()
        {
                  //draw the bitmaps
                } 
            public void pause()
        {
            ok=false;
            Log.v("pause()", "ok=false");
            while(true)
            {
                try{

                    t.join();

                }
                catch(InterruptedException e)
                {
                    Log.v("pause()",e.toString());
                }

                break;
            }
           t=null;

        }
        public void resume()
        {
            ok=true;
            if(t==null)
            {
             t=new Thread(this);
               t.start();
               Log.v("resume()", "new thread started");
            }
            else
            {
                Log.v("resume()", "new thread not started as t!=null");
            }
        }
}

И в деятельности onResume() и onCreate() :

@Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        Log.v("onPause()", "super.onPause()");
        v.pause();  //V IS AN OBJECT OF THE CLASS OurView

    }
    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        Log.v("onResume()", "super.onResume()");
        v.resume();
      }

Я узнал это из этого видео (и последующего 1.28 -1.33) - http://youtube.com/watch?v=Z2YogvILjvo