0

好的,有人建议我为我的问题创建一个新线程。我正在使用导入的 SQLite 数据库。无论如何,我已经为正确和错误答案制作了两个主题对话框,我想在点击正确或错误答案时显示它们。这是我活动中的代码,删去部分:

private class Answer {
        public Answer(String opt, boolean correct) {
            option = opt;
            isCorrect = correct;
        }

        String option;
        boolean isCorrect;
    }

    final OnClickListener clickListener = new OnClickListener() {

        public void onClick(View v) {
            Answer ans = (Answer) v.getTag();
            if (ans.isCorrect) {
                Toast toastT = Toast.makeText(Kviz.this, "Correct!", Toast.LENGTH_SHORT);
                toastT.show();
                finish();
            }else{
                Toast toastP = Toast.makeText(Kviz.this, "Wrong!", Toast.LENGTH_SHORT);
                toastP.show();
                }
                startActivity(getIntent());
            }
    };

当我像上面那样使用 Toast 时,它可以正常工作,但是当我尝试像这样使用我的主题活动时,它不会,而是直接进入下一个问题,当我按下手机上的后退按钮时,我会得到那个主题弹出活动:

final OnClickListener clickListener = new OnClickListener() {

        public void onClick(View v) {
            Answer ans = (Answer) v.getTag();
            if (ans.isCorrect) {
                Intent t = new Intent("rs.androidaplikacijekvizopstekulture.TACANODGOVOR");
                startActivity(t);
                finish();
            }else{
                    Intent p = new Intent("rs.androidaplikacijekvizopstekulture.POGRESANODGOVOR");
                    startActivity(p);
                }
                startActivity(getIntent());
            }
    };

重复一遍,当我按下后退按钮时,我得到了主题活动,当我往回走时,我得到了错误的和正确的。我只想显示该对话框,然后加载下一个问题,就像 Toast 一样。只是提到这个活动加载在我的其他活动中工作正常,只是在简单的按钮点击之后,没有问题和答案。

4

1 回答 1

0

原因是在调用任何 (right/wrong)startActivity之后,它会继续调用startActivity(getIntent());方法。一种方法是通过在清单文件中为这些活动添加以下标签/值来制作您的 TACANODGOVOR 和 POGRESANODGOVOR 对话活动,android:theme="@android:style/Theme.Dialog"例如

<activity ... android:theme="@android:style/Theme.Dialog" />

它将显示 TACANODGOVOR 和 POGRESANODGOVOR 作为对话框,除非用户按下后退按钮(或任何退出按钮活动可能有),否则它不会进入下一行。

于 2013-02-28T18:08:38.487 回答