2012-01-28 27 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

फिनिश() फ़ंक्शन गैर-अवरुद्ध है, इसका मतलब यह है कि पृष्ठभूमि में गतिविधि समाप्त होने पर निष्पादन जारी रहेगा।

अपनी समस्या का समाधान करने के लिए, खत्म() कॉल के बाद एक वापसी विवरण जोड़ें।

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(); 
} 
संबंधित मुद्दे