【问题标题】:Android Back Button errorAndroid后退按钮错误
【发布时间】:2015-12-02 21:26:46
【问题描述】:

第一个问题是 Question_oceans 请参见下面的代码。试图让用户注意按下按钮时它无法得到“Prevoius”问题,因为这是第一个问题“我收到错误。

private Question[] mQuestionBank = new Question[]{
        new Question(R.string.question_oceans, true),
        new Question(R.string.question_mideast, false),
        new Question(R.string.question_africa, false),
        new Question(R.string.question_americas, true),
        new Question(R.string.question_asia, true),
};

private int mCurrentIndex = 0;

private void updateQuestion() {
    int question = mQuestionBank[mCurrentIndex].getTextResId();
    mQuestionTextView.setText(question);
}

private void lastQuestion(boolean userPressedPrevious) {
    boolean answerIsYes = mQuestionBank[mCurrentIndex].isAnswerTrue();

    int messageQuesId = 0;

    if (userPressedPrevious == answerIsYes) {
        messageQuesId = R.string.not_previous;
    } else {
        updateQuestion();
    }

    Toast.makeText(this, messageQuesId, Toast.LENGTH_SHORT).show();
}

private void checkAnswer(boolean userPressedTrue) {
    boolean answerIsTrue = mQuestionBank[mCurrentIndex].isAnswerTrue();

    int messageResId = 0;

    if (userPressedTrue == answerIsTrue) {
        messageResId = R.string.correct_toast;
    } else {
        messageResId = R.string.incorrect_toast;
    }

    Toast.makeText(this, messageResId, Toast.LENGTH_SHORT).show();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_quiz);

    mQuestionTextView = (TextView) findViewById(R.id.question_text_view);

    mTrueButton = (Button) findViewById(R.id.true_button);
    mTrueButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            checkAnswer(true);
        }

    });

    mFalseButton = (Button) findViewById(R.id.false_button);
    mFalseButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            checkAnswer(false);
        }
    });

    mPreviousButton = (Button) findViewById(R.id.previous_button);
    mPreviousButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mCurrentIndex = (mCurrentIndex - 1) % mQuestionBank.length;
            updateQuestion();
            lastQuestion(true);
        }
    });
    updateQuestion();

    mNextButton = (Button) findViewById(R.id.next_button);
    mNextButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mCurrentIndex = (mCurrentIndex + 1) % mQuestionBank.length;
            updateQuestion();
        }
    });

    updateQuestion();

【问题讨论】:

  • 欢迎来到 SO。当您遇到错误时,请告诉我们错误消息的内容以及它出现在哪一行。
  • 请贴出LogCat 的错误信息输出——它会让调试变得更简单。
  • AndroidRuntime:致命异常:主进程:com.bignerdranch.android.geoquiz,android.content.res.Resources$NotFoundException:字符串资源 ID #0x0 atandroid.content.res.Resources.getText(Resources .java:1334) atandroid.widget.Toast.makeText(Toast.java:379)

标签: android toast android-toast


【解决方案1】:

也许您应该使用 try catch 语句。如果再次运行它,您可能会看到一个 logcat 错误,告诉您它的问题所在。在捕获中,您可以在 Toast 中说“抱歉,上一个问题不可用”。祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多