0

Playストアでゲームを公開したばかりで、見栄えを良くして直感的にすることを計画しています。Androidのダイアログを地雷に置き換えようとしています。

ユーザーがレベルを終了するときに、カスタムダイアログを表示する必要があります。ユーザーがいくつかのボタンをクリックすると、ダイアログ(ダイアログのように見えるカスタムテーマのアクティビティ)は整数を返し、setResult(customResult, intent)終了する必要があります。 。

onActivityResult()問題は、実行したアクティビティのresultCodeを受け取ったときにstartActivityForResult(intentCustomDialog, 0)、結果に応じてレベルを再起動するか、次のレベルを起動するカスタムメソッドを呼び出すことです(ユーザーがクリックしたボタンを知るために使用されます)。このメソッドもクロノメーターを再起動する必要がありますが、何もしません!!!!!!!
反対側で、Androidダイアログを使用してrestart()、onClickListenerに呼び出しを入れると、クロノメーターが正常に再起動されます!?

だから私は何が欠けていますか?メソッドから呼び出したときに、呼び出しがandroidダイアログの1つでrestart()クロノメーターを正常に再起動するのに、なぜ正常に再起動しないのですか?onClickListeneronActivityResult()

onActivityResult()独自のダイアログの実装を作成し、カスタムメソッドを使用したり、カスタムメソッドを呼び出して、カスタムダイアログアクティビティと通常のアクティビティの起動onDialogResult()を分離したりできるので、非常に役立ちます。startActivityForResult()

前もって感謝します。

編集

私のゲームクラスでは:

...
public static final int RESULT_RESTART = 8;
public static final int RESULT_NEXT = 9;
public static final int RESULT_MENU = 10;
...

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (resultCode) {
        case RESULT_MENU:
            back(null);
            break;
        case RESULT_NEXT:
            nextGrid();
            break;
        case RESULT_RESTART:
            restartGrid();
            break;
    }
}

restartGrid()メソッド:

public void restartGrid() {
    ...
    startChrono();
    ...
}

public void startChrono() {
    chrono.setBase(SystemClock.elapsedRealtime());
    chrono.start();
}

から完全に動作しDialogInterface.OnClickListener()ます。

4

1 に答える 1

0

それを動作させることができます:

public void startChrono() {
    chrono.post(new Runnable() {
        @Override
        public void run() {
            chrono.setBase(SystemClock.elapsedRealtime());
            chrono.start();
        }
    });
}

しかし、postメソッドを使用せずに色付けされたビューが正しくリセットされるため、クロノメーターに対してなぜそれを行わなければならないのかまだわかりません...とにかくそれは機能します:)

于 2012-07-21T15:33:37.467 に答える