我的问题可能有点愚蠢,但你能否给我一些建议,告诉我如何最有效地解决以下问题: 我有一个包含Frame布局的Activity,并附带了一些Views。 其中一个视图(是一个SurfaceView和)运行一些图形代码,而这个图形是从另一个线程绘制和更新的。一旦在此视图/线程上执行了某个操作,我想用一个新的SurfaceView替换旧的SurfaceView(基本上重新启动darwing而不会实现整个新活动)。我希望你能帮助我,因为我放弃了xD (P.S.我有一个runOnUiThread来处理替换的动作)
如果你不明白我想要完成什么,请随时问。 谢谢你的帮助;)
编辑:我的代码流图(如果你需要更具体的病,请发送一些实际的代码)
EDIT2: 代码:
public class GameActivity extends Activity{
FrameLayout game;
Game g;
View deathscreen;
public void onCreate(Vundle savedInstanceState){
game = new FrameLayout(this);
g = new Game(this);
deathscreen = LayoutInfalter.from(this).inflate(R.layout.deathscreen,
null);
game.addView(deathScreen);
game.addView(g);
setContentView(game);
}
public void restartGame(){
g = new Game(this);
}
}
Game.java{
Player p;
GameThread gt;
public void surfaceCreated(){
player = new Player();
gt = new GameThread();
}
}
GameThread.java extends Thread:
Game g; //ref to Game instance
public void run(){
while(a){
//lock canvas
g.update(); //calling Player.update();
g.draw(canvas);
}
}
Player.java:
GameActivity g;
[...]
public void update(){
if(...){
g.restartGame();
}
}
答案 0 :(得分:1)
尝试重新填充布局并使用setContentView(view)进行设置。这可能有效或可能无效,具体取决于代码的其余部分的设置方式