为什么这项活动没有完成?

时间:2012-01-28 15:19:03

标签: java android

我有以下代码:

    mQuestions=DictionaryDbWrapper.getInstance().getQuestionsSequence(
            this.getIntent().getStringExtra(ApplicationUtilities.TEST_CATEGORY_PARAMETER), 50);
    mQuestionsCount=mQuestions.size();
    Log.e("count", String.valueOf(mQuestionsCount));
    if (mQuestionsCount==0) {
        Log.e("1", "111");
        Toast.makeText(this, "В данной категории нет слов", Toast.LENGTH_LONG).show();
        this.finish();
    }

    makeQuestion();

mQuestions是空的ArrayList,我看到count总是等于0。我也总是在我的日志中看到1/111记录。但我的活动没有做完成方法!

makeQuestion是不需要使用空mQuestion的方法(它抛出异常)。但是,如果我对makeQuestion发表评论,则finish方法效果很好!此代码的方法适用于主线程(它从onCreate()方法执行)。

请告诉我出错的地方。

提前致谢。

2 个答案:

答案 0 :(得分:4)

finish()函数是非阻塞的,这意味着当活动在后台完成时执行将继续。

要解决您的问题,请在完成()调用后添加一个return语句。

答案 1 :(得分:1)

我很确定调用finish()没有调用return的类似阻止效果。

根据您的代码,您假设finish()具有与return相同的阻止效果。

试试这个:

mQuestions=DictionaryDbWrapper.getInstance().getQuestionsSequence(
        this.getIntent().getStringExtra(ApplicationUtilities.TEST_CATEGORY_PARAMETER), 50);
mQuestionsCount=mQuestions.size();
Log.e("count", String.valueOf(mQuestionsCount));
if (mQuestionsCount==0) {
    Log.e("1", "111");
    Toast.makeText(this, "В данной категории нет слов", Toast.LENGTH_LONG).show();
    this.finish();
}
else {
    makeQuestion();
}