1

我有Dialog透明活动,它就像一个暂停菜单,所以当显示对话框并按下Home按钮时一切正常,但是当我重新打开它时,它Dialog显示,除了背景是空白的。游戏是用做的canvasSurfaceView所以我不能 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();

            }
        });

    }
}
4

1 回答 1

0

扩展凯西的评论:您能否尝试关闭活动的 onPause() 内的对话框并查看您的 SurfaceView 是否恢复?如果是这样,您可以使用 onResume() 再次显示对话框(在恢复表面之后)。

您可能应该在您的表面/游戏循环中有一个额外的标志来跟踪暂停/恢复的游戏状态(不仅仅是绘图状态),因此您可以在不推进实际游戏的情况下运行绘图循环(使其可见)。

于 2013-01-09T13:01:31.683 回答