2012-01-28 50 views
5

Tôi đã mã sau:Tại sao hoạt động này không kết thúc?

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 trống ArrayList, và tôi thấy rằng count bằng 0 trên Log luôn. Ngoài ra, tôi cũng thấy bản ghi 1/111 trên Nhật ký của mình. Nhưng hoạt động của tôi không thực hiện phương thức hoàn thành!

makeQuestion là phương pháp không cần làm việc với trống mQuestion (nó ném Ngoại lệ). Nhưng nếu tôi đưa ra nhận xét cho makeQuestion thì phương thức finish hoạt động tốt! Phương thức cho mã này hoạt động trên luồng chính (nó được thực hiện từ phương thức onCreate()).

Vui lòng đề xuất nơi tôi đang gặp sự cố.

Xin cảm ơn trước.

Trả lời

4

Hàm finish() không bị chặn, điều này có nghĩa là quá trình thực hiện sẽ tiếp tục trong khi hoạt động kết thúc ở chế độ nền.

Để khắc phục sự cố của bạn, hãy thêm câu lệnh trả về sau khi gọi xong().

1

Tôi khá chắc chắn rằng việc gọi finish() không có tác dụng chặn tương tự khi gọi return.

Dựa trên mã của bạn, bạn giả định rằng finish() sẽ có tác dụng chặn tương tự là return.

Hãy thử điều này:

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(); 
} 
Các vấn đề liên quan