2012-07-21 45 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方法.. 。 反正它的工作原理:)

相关问题