我弄了个游戏开场动画的SurfaceView,点击开始按钮后便转换到游戏进行时的SurfaceView,就是在同一Activity中实现多个SurfaceView的切换,但我切换到另一个SurfaceView就会出错,请问怎么回事?

解决方案 »

  1.   


    package dylan.game;import android.app.Activity;public class Main extends Activity 
    {
        /** Called when the activity is first created. */
    public MySurfaceView ms;
    public static boolean isStart = false;
    protected static final int gameStart = 1;
    protected static final int gamePlay = 2;
    Thread myRefreshThread = null;  
    MySurfaceView mSurfaceView = null;
    WelcomeView welcomeView;
    public Handler myHandler = new Handler(){
    public void handleMessage(Message msg)
    {
    switch (msg.what) {
    case gameStart:
    if (ms!=null) {
    ms = null;
    }
    changUItoGame();
    break;
    case gamePlay:
    changUItoStart();
    break;
    default:
    break;
    }
    }
    };

        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
            this.requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(new WelcomeView(this));
        }
        public void changUItoGame(){
         Log.d("Dylan", "Changing!!!!!!!!!!!!!!!!!!");
         ms = new MySurfaceView(this);
         setContentView(ms);
        }
        public void changUItoStart(){
         setContentView(new WelcomeView(this));
        }
    }
      

  2.   

    我的问题找到了,是因为之前的view没有释放掉,而那个view会导致setContenView被2次调用,引发了空指针异常