2012-01-28 89 views
5

我有以下代码:这个活动为什么不完成?

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()方法执行)。

请指出我出错的地方。

在此先感谢。

回答

4

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

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

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(); 
}