0

我有一些转储问题。我有一些 Onclick 监听器:

    OnClickListener listener = new OnClickListener() {
        public void onClick(View myView) {
...
                if (gameInfo.isWin()){
                    //Dialogs.showWinWindow(FifteenActivity);
                }
...
    }

我想将我的主要活动发送到外部静态方法以显示一些对话框。如果我在 onClickListener 之外,我会写:

        if (gameInfo.isWin()){
                Dialogs.showWinWindow(this);
            }

但在这种情况下,我将发送 OnClickListener。我必须在这个方法中写什么来发送我的活动?

Quatoin 2.从外部方法重新启动 Activity 的问题相同。在我使用的 mainActivity 类中

    public void restart()   
{  
    Intent intent = getIntent();
    overridePendingTransition(0, 0);
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
    finish();
    overridePendingTransition(0, 0);
    startActivity(intent);
}

有用。但是我如何可以将此方法用作外部类的“静态”。就像是:

Dialogs.restart(/*Some info?*/);

谢谢指教。

4

1 回答 1

0

当您需要在侦听器或类似的东西中执行代码时传递您的活动的引用时,您必须这样做:

OnClickListener listener = new OnClickListener() {
    public void onClick(View myView) {
            ...
            if (gameInfo.isWin()){
                Dialogs.showWinWindow(FifteenActivity.this);
            }
            ...
}

注意FifteenActivity.this,这将返回对您的活动的引用。

关于问题 2,您必须这样做:

public static void restart()   
{  
    Intent intent = getIntent();
    overridePendingTransition(0, 0);
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
    finish();
    overridePendingTransition(0, 0);
    startActivity(intent);
}

这意味着,如果不将其声明为静态方法,就无法以这种方式调用 restart 方法。

于 2013-04-13T14:16:30.877 回答