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.外部メソッドからアクティビティを再起動する場合と同じ問題。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);
}

つまり、静的メソッドとして宣言せずに、この方法で再起動メソッドを呼び出す方法はありません。

于 2013-04-13T14:16:30.877 に答える