2011-11-02 15 views
10

मैं कैसे पता लगा सकता हूं कि एक गतिविधि गतिविधि से बैक बटन दबाकर ध्यान केंद्रित करने के लिए कोई गतिविधि आई, और उस समय मैं कुछ कोड कैसे निष्पादित कर सकता हूं?बाल गतिविधि से वापस आने पर कैसे पता लगाया जाए?

+0

अपने तर्क को अपने मूल गतिविधि के ऑनर्यूम() में डाल दें। तो एक बार यू आपके बच्चे से वापस आया तो यह निष्पादित होगा। –

उत्तर

3

जिस विधि को आप ढूंढ रहे हैं वह रेस्यूम विधि हो सकती है जो आप अपनी मां वर्ग में लागू कर सकते हैं;)। आपको पता होना चाहिए कि ऑनस्यूम को पहली बार किसी भी गतिविधि को लॉन्च करने के लिए भी कहा जाता है। एक गतिविधि के जीवन चक्र को देखो: http://developer.android.com/images/activity_lifecycle.png

सादर,

+1

तो क्या होगा यदि ऑन्यूज़ पर मेरे पास फ़ंक्शन अपडेट है? गतिविधि पर पहली बार प्रारंभ/कॉन्फ़िगरेशन परिवर्तन, अद्यतन भी कहा जाएगा, भले ही इसका इरादा नहीं है। –

+1

यह उत्तर कैसे मदद करता है? 'रेस्यूम()' दोनों को तब कहा जाता है जब मां गतिविधि पहली बार लॉन्च होती है, और जब आप बच्चे की गतिविधि से बैक बटन दबाकर वहां वापस आते हैं। तो आप अंतर का पता कैसे लगा सकते हैं? – LarsH

12

एक संभावना है कि startActivityForResult() के साथ अपने बच्चे की गतिविधि शुरू करें और onActivityResult() लागू करें जिसे आप बच्चे गतिविधि से वापस करते समय बुलाए जाएंगे।

4

js का जवाब सही है, लेकिन यहाँ कुछ डिबग कोड है।

अपनी गतिविधि के शीर्ष पर एक निरंतर के रूप में अनुरोध कोड घोषित:

public static final int OPEN_NEW_ACTIVITY = 123456; 

इस रखो जहाँ आप नई गतिविधि शुरू:

Intent intent = new Intent(this, NewActivity.class); 
startActivityForResult(intent, OPEN_NEW_ACTIVITY); 

जब गतिविधि समाप्त हो गया है कुछ करो। दस्तावेज़ीकरण से पता चलता है कि आप resultCode का उपयोग करते हैं, लेकिन स्थिति के आधार पर, आपका परिणाम RESULT_OK या RESULT_CANCELED हो सकता है जब बटन दबाया जाता है। तो मैं इसे छोड़ दूंगा।

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == OPEN_NEW_ACTIVITY) { 
     // Execute your code on back here 
     // .... 
    } 
} 

किसी कारण से, मुझे इसे एक टुकड़े में डालने में परेशानी थी। तो आपको इसे गतिविधि में रखना होगा।

0

आप ऑनबैकप्रेस() विधि और ऑनऑप्शन इटैम सेलेक्टेड() विधि दोनों को ओवरराइड भी कर सकते हैं और वहां कुछ तर्क डाल सकते हैं। उदाहरण के लिए मैंने इसे अपनी बेसएक्टिविटी में रखा है, जो अन्य सभी गतिविधियां विस्तारित करती हैं:

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

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    if (item.getItemId() == android.R.id.home) { 
     // your logic 
    } 
    return super.onOptionsItemSelected(item); 
} 
संबंधित मुद्दे