我有透明活动的Dialog
,它就像一个暂停菜单,所以当显示对话框并按Home
按钮时,一切正常,但当我重新打开时Dialog
显示,除了背景是空白的。游戏是使用canvas
和SurfaceView
制作的,因此我无法在该屏幕上显示Dialog
或我可以,因为我正在尝试但每次都会收到错误
所以,当我按下后退键Dialog
完美显示时:
但是当我点击主页按钮并长按主页按钮重新打开应用程序时,我得到了这个:
onResume代码:
@Override
protected void onResume() {
super.onResume();
ourSurfaceView.resume();
}
public void resume() {
isRunning = true;
ourThread = new Thread(this);
ourThread.start();
}
显示Dialog
的活动:
public class ShowPopUp extends Activity {
Dialog myDialog;
GameSurface ourSurfaceView;
Button toMenu;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.showpopupmain);
myDialog = new Dialog(ShowPopUp.this);
myDialog.setContentView(R.layout.showpopup);
myDialog.setTitle("Paused");
myDialog.setCancelable(true);
Button button = (Button) myDialog.findViewById(R.id.Btn1);
toMenu = (Button)myDialog.findViewById(R.id.Btn2);
toMenu.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
Intent menu = new Intent(
"com.example.mygame.Menu");
startActivityForResult(menu, 5);
}
});
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
myDialog.dismiss();
finish();
}
});
myDialog.show();
myDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
ShowPopUp.this.finish();
}
});
}
}
答案 0 :(得分:0)
扩展凯西的评论: 您是否可以尝试关闭活动的onPause()内的对话框,看看SurfaceView是否恢复? 如果是,则可以使用onResume()再次显示对话框(恢复曲面后)。
你应该在你的表面/游戏循环中有一个额外的标志来跟踪暂停/恢复的游戏状态(不仅仅是绘制状态),这样你就可以在不推进实际游戏的情况下运行绘图循环(因此它是可见的)。 / p>