Java 你好安卓数独检查游戏是否完成,显示一个对话框

Java 你好安卓数独检查游戏是否完成,显示一个对话框,java,android,eclipse,sudoku,Java,Android,Eclipse,Sudoku,我试图在hello Android数独示例中显示一个对话框,但当我运行应用程序时,什么都没有发生。在game.java中,我检查谜题是否像这样解决 /******Check to see if the game is complete**/ public boolean isSolved() { for (int element : puzzle) { if (element == 0) return false; }

我试图在hello Android数独示例中显示一个对话框,但当我运行应用程序时,什么都没有发生。在game.java中,我检查谜题是否像这样解决

/******Check to see if the game is complete**/
   public boolean isSolved()
   {
       for (int element : puzzle) {
           if (element == 0) return false;
        }
        return true;           
   }
然后在onKeyDown方法的PuzzleView中,我尝试检测IsResolved是否为true,以及它是否为true,并显示对话框

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (game.isSolved() == true) {
        Intent i = new Intent(mActivity, Congratulations.class);
        getContext().startActivity(i);
    } else {
        Log.d(TAG, "onKeyDown: keycode=" + keyCode + ", event=" + event);
        switch (keyCode) {
        case KeyEvent.KEYCODE_DPAD_UP:
            select(selX, selY - 1);
            break;
        case KeyEvent.KEYCODE_DPAD_DOWN:
            select(selX, selY + 1);
            break;
        case KeyEvent.KEYCODE_DPAD_LEFT:
            select(selX - 1, selY);
            break;
        case KeyEvent.KEYCODE_DPAD_RIGHT:
            select(selX + 1, selY);
            break;
        case KeyEvent.KEYCODE_0:
        case KeyEvent.KEYCODE_SPACE:
            setSelectedTile(0);
            break;
        case KeyEvent.KEYCODE_1:
            setSelectedTile(1);
            break;
        case KeyEvent.KEYCODE_2:
            setSelectedTile(2);
            break;
        case KeyEvent.KEYCODE_3:
            setSelectedTile(3);
            break;
        case KeyEvent.KEYCODE_4:
            setSelectedTile(4);
            break;
        case KeyEvent.KEYCODE_5:
            setSelectedTile(5);
            break;
        case KeyEvent.KEYCODE_6:
            setSelectedTile(6);
            break;
        case KeyEvent.KEYCODE_7:
            setSelectedTile(7);
            break;
        case KeyEvent.KEYCODE_8:
            setSelectedTile(8);
            break;
        case KeyEvent.KEYCODE_9:
            setSelectedTile(9);
            break;
        case KeyEvent.KEYCODE_ENTER:
        case KeyEvent.KEYCODE_DPAD_CENTER:
            game.showKeypadOrError(selX, selY);
            break;
        default:
            return super.onKeyDown(keyCode, event);
        }
        return false;
    }
    return false;

}

我正在学习java和Android开发,因此,如果您对我的错误有任何帮助,我将不胜感激。如果有人需要更多信息,请提问,我会将其放在问题的编辑部分。

WillNZ这不是答案,只是告诉你如何放置日志

/******Check to see if the game is complete**/
   public boolean isSolved()
   {
       for (int element : puzzle) {
           if (element == 0) return false;
        }
        Log.d("TAG", " isSolved() is true");
        return true;           
   }

运行你的应用程序,看看你是否能在你的日志中看到“IsResolved()is true”。

最后,我检查游戏是否完成的方法是在game.class中有这个

/****** Check to see if the game is complete **/
public boolean isSolved() {
    for (int element : puzzle) {
        if (element == 0)
            return false;
    }
    return true;
}
而且

public boolean checkIsSolved()
{
    //check if the game is complete after each valid move
    if (isSolved() == true) { 
        Intent i = new Intent(this, Congratulations.class); 
        startActivity(i);} 
        else
        {
            return false;
        }
    return false;
}

当我们不知道变量拼图中的内容时,就很难解决这个问题。你想让我发布整个游戏类和整个拼图视图类吗?不需要,因为它有很多代码。只是想知道isSolved()是否返回true。你可以在那里放一根圆木来检查一下。@lazynija我该怎么做呢?很抱歉,我对Java和eclipseBy完全陌生。你是说活动吗?因为您正在启动一个活动,而Android为预先设计的对话框提供了一些非常简单的生成器类。有关更多信息,请参阅AlertDialog.Builder:好的,我在调试模式下运行了它,但没有在logcat中看到ISResolved。这就是我想知道的。问题不在于对话框的显示。由于isSolved()永远不会返回true,因此不会调用对话框活动。Okay on onKeyDown()方法将if(game.isSolved()==true)更改为if(true)。这将在您每次按键时启动对话框,但您可以检查对话框是否显示。好的,因此对话框没有显示,并且else语句的代码在下面加了下划线,并显示消息“Dead code”options“remove(包括condition)”和“Add@SuppressWarnings'unsed'to'onKeyDown()'暂时忽略警告。这只是出于测试目的。您是否在清单文件中注册了祝贺活动?如果是,请替换Intent i=new Intent(mActivity,恭喜。class);替换Intent i=new Intent(getApplicationContext(),恭喜。class);是的,它已在清单文件中注册。我现在有
公共布尔onKeyDown(int-keyCode,KeyEvent-event){//if(game.isSolved()==true){if(true){//Intent I=new Intent(mActivity,恭喜.class);Intent I=new Intent(getApplicationContext(),恭喜.class);getContext().startActivity(I);
它在getApplicationContext上有一个错误