2012-07-21 53 views
0

我剛剛發表在Play商店中的遊戲,我打算讓它看起來更好,更直觀,SI我想地雷取代Android的對話框。方法的調用 - onActivityResult VS DialogInterface.OnClickListener()

當用戶完成一個級別,我需要我的自定義對話框顯示,如果用戶點擊一些按鈕,對話框(這是一個自定義主題,使它看起來像一個對話的活動),必須返回一個整數與setResult(customResult, intent)然後完成。

的問題是,當我收到這並startActivityForResult(intentCustomDialog, 0)活動的onActivityResult()的resultCode爲,我將其稱爲重啓級別或啓動下一個根據結果自定義方法(用於瞭解用戶點擊哪個按鈕)。這種方法也應該重新啓動天文臺,但它什麼都不做!!!!!!!
在另一邊,當我使用android對話框,我把電話restart()在onClickListener記時計重新啓動成功!?

所以我缺少什麼?爲什麼restart()調用成功重啓了Android對話的onClickListener,但不記時計,當我把它從onActivityResult()方法?

將是非常有益的,所以我可以做我自己的對話框實施和使用onActivityResult()甚至調用自定義onDialogResult()法分離的自定義對話框活動和正常活動startActivityForResult()啓動。

在此先感謝。

EDIT

在我的遊戲類:

... 
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()

+0

你確定'onActivityResult()'叫? – Caner 2012-07-21 13:20:57

+0

是的,我確定,因爲玩家着色的​​視圖已成功重設爲原始顏色。這就是奇怪的原因,這個機制是完美的,只有天文​​鐘沒有沒有理由的復位。 – Flawyte 2012-07-21 13:24:36

+0

您可以發佈天文臺表的代碼和'onActivityResult()' – Caner 2012-07-21 13:25:45

回答

0

能得到它的工作:

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

但我還是不明白,爲什麼我不得不這樣做的時計爲已着色的觀點是否正確reseted使用內部消除POST方法.. 。 反正它的工作原理:)

相關問題