2013-01-02 11 views
13

मैं Activity से ActivitystartActivityForResult(intent, requestCode) के साथ एक नया Activity शुरू करता हूं। जब मैं बैक बटन दबाता हूं तो मैं मूल Activity पर डेटा वापस करना चाहता हूं, इसलिए मूल Activity पर वापस लौटने पर।गतिविधि वापस लौटने पर परिणाम बंद हो जाता है

  • अधिभावी onBackPressed():

    @Override 
    public void onBackPressed() { 
        super.onBackPressed(); 
    
        Intent intent = new Intent(); 
        intent.putIntegerArrayListExtra(SELECTION_LIST, selected); 
        setResult(RESULT_OK, intent); 
    } 
    
  • अधिभावी onPause(): मैं दो तरीकों की कोशिश की

    @Override 
    protected void onPause() { 
        super.onPause(); 
    
        Intent intent = new Intent(); 
        intent.putIntegerArrayListExtra(SELECTION_LIST, selected); 
        setResult(RESULT_OK, intent); 
    } 
    

दुर्भाग्य से, उनमें से कोई भी काम किया (resultCodeonActivityResult() में RESULT_OK नहीं है) । ऐसा करने का सही तरीका क्या है? धन्यवाद!

उत्तर

7

से ओवरराइड

onActivityResult(int requestCode, int resultCode, Intent data) विधि के बाद से यह सवाल अभी भी ध्यान दिया जा रहा है, मैं एक अधिक सही जवाब पोस्टिंग कर रहा हूँ दो साल पहले मैंने स्वीकार किया था, MasterGaurav के लिए tip के लिए धन्यवाद।

@Override 
public void onBackPressed() { 
    Intent intent = new Intent(); 
    intent.putIntegerArrayListExtra(SELECTION_LIST, selected); 
    setResult(RESULT_OK, intent); 

    super.onBackPressed(); 
} 
1

इस प्रयास करें:

@Override 
public void onBackPressed() { 
    // super.onBackPressed(); 

    Intent intent = new Intent(); 
    intent.putIntegerArrayListExtra(SELECTION_LIST, selected); 
    setResult(RESULT_OK, intent); 
    finish(); 
} 
+0

दुर्भाग्य से, यह काम नहीं करता है, 'requestCode' अभी भी' RESULT_OK' नहीं है। – WonderCsabo

23

इस प्रयास करें बैक बटन दबाता है, इसलिए मूल गतिविधि पर लौटने पर।

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 

    Intent intent = new Intent(); 
    intent.putIntegerArrayListExtra(SELECTION_LIST, selected); 
    setResult(RESULT_OK, intent); 
} 

अगर आप नव खुला गतिविधि से परिणाम getback करना चाहते हैं सिर्फ मूल गतिविधि

@Override 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    super.onActivityResult(requestCode, resultCode, data); 

} 
+0

बेशक, मैं सिर्फ अन्य उत्तरों को भी आजमा देना चाहता था। ;) – WonderCsabo

+0

@WonderCsabo धन्यवाद। :) –

+0

@pratik: फिर मूल गतिविधि पर, क्या आपको रीज़्यूम() या न्यूइन्टेंट() पर मंशा मिलेगा? – Behnam

0

प्रारंभ जब जब उपयोगकर्ता मूल गतिविधि के लिए डेटा वापस करना चाहते startActivityForResult(intent, requestCode)

के साथ मूल गतिविधि से एक नई गतिविधि:

public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      onBackPressed(); 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
+0

असल में मैंने वही काम किया, जैसा कि मैंने ओपी में लिखा है। यह काम नहीं करता है, हालांकि प्रैटिक का सुझाव हालांकि काम करता है। – WonderCsabo