我刚刚在Play商店发布了一款游戏,并计划让它看起来更好,更直观,我正试图用地雷取代Android对话框。
当用户完成一个级别时,我需要显示自定义对话框,如果用户单击某些按钮,则对话框(具有使其看起来像对话框的自定义主题的活动)必须返回一个整数, setResult(customResult, intent)
然后完成。
问题是,当我在onActivityResult()
活动的startActivityForResult(intentCustomDialog, 0)
中收到resultCode时,我会调用一个自定义方法重启该级别,或根据结果启动下一个级别(使用知道用户点击了什么按钮。这种方法也应该重新启动Chronometer,但它什么都不做!!!!!!!
另一方面,当我使用android对话框并将restart()
调用放入onClickListener时,计时器成功重启!?
那我错过了什么?为什么restart()
调用使用onClickListener
安卓对话框成功重启计时器,但是当我从onActivityResult()
方法调用时却没有?
非常有帮助,因此我可以创建自己的对话框并使用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()
开始。
答案 0 :(得分:0)
可以让它发挥作用:
public void startChrono() {
chrono.post(new Runnable() {
@Override
public void run() {
chrono.setBase(SystemClock.elapsedRealtime());
chrono.start();
}
});
}
但是我仍然不明白为什么我必须为计时器这样做,因为已经着色的视图在没有使用post方法的情况下被正确重置... 无论如何它有效:)