2012-07-21 11 views
5

में अपने आवेदन में भर मैं खोज बटन एक अलग Activity प्रदर्शन करने के लिए चाहते हैं। यानी जब मैं खोज बटन दबाता हूं तो ऐप में कहीं से भी मैं एक अलग गतिविधि को कॉल करने के लिए चाहता हूं। (जैसे Manifest.xml) है और यह पूरे एप्लिकेशन में इस्तेमाल किया जा सकताग्लोबल "खोज समारोह" पूरे एप्लिकेशन

वहाँ किसी भी तरह से है कि बजाय हर गतिविधि में onSearchRequested() को परिभाषित करने की, मैं सिर्फ यह एक स्थान पर कॉन्फ़िगर है?

+0

साथ ऊपर के उदाहरण में के रूप में लागू करें कि आप सही जवाब देने के लिए यदि आप इसका इस्तेमाल किया चिह्नित करें। यदि नहीं, तो हमें अधिक जानकारी प्रदान करें। – Michal

उत्तर

6

आप एक (जरूरी नहीं) अमूर्त वर्ग है कि गतिविधि फैली परिभाषित onSearchRequest वहाँ लागू करने और उस वर्ग से अन्य सभी गतिविधि कक्षाओं के वारिस सकता है। इस तरह आपको केवल एक बार खोज व्यवहार को परिभाषित करना होगा।

अर्थात

public abstract class MyBaseActivity extends Activity { 
    @Override 
    public void onSearchRequest() { 
     // Your stuff here 
    } 
} 

public class MyActivity1 extends MyBaseActivity { 
    // OnSearchRequest is already implemented 
} 

आप गतिविधि के कई उपवर्गों, अर्थात ListActivity उपयोग करना चाहते हैं, यह एक अच्छा समाधान नहीं हो सकता है, जैसा कि आप सभी गतिविधि उपवर्गों आप उपयोग के लिए एक सार आधार वर्ग बनाना होगा। इस मामले में मैं एक अतिरिक्त वर्ग बनाने की सलाह देते हैं, खोज बटन से निपटने कोड encapsulating और onSearchRequest फोन है कि आप गतिविधियों से, यानी

public class SearchButtonHandle { 
    public void handleSearch(Context c) { 
     // Your search btn handling code goes here 
    } 
} 

public class MyActivity1 extends Activity { // Or ListActivity .... 
    @Override 
    public void onSearchRequest() { 
     new SearchButtonHandle().handleSearch(this); 
    } 
} 
बेशक

आप भी सभी गतिविधि का एक सार उपवर्ग को परिभाषित करते हुए दोनों approches गठजोड़ कर सकते हैं उपवर्गों आप का उपयोग करें और onSearchRequest एक बाहरी खोजें हैंडलर

+0

वास्तव में एक बहुत अच्छा विचार है, लेकिन क्या अगर वह कहीं ListView गतिविधि का उपयोग करना चाहता है कि? – Michal

+1

@Michal मुझे लगता है कि इस मामले में यह निर्भर करता है, वह कई ListActivities या गतिविधि के अन्य उपवर्गों का उपयोग करता है में, संरचना विरासत की तुलना में एक बेहतर समाधान हो सकता। उदाहरण के लिए वह सर्च हैंडलिंग क्लास को खोज बटन को संभालने के लिए कोड को समाहित कर सकता है और सभी गतिविधियों से कॉल कह सकता है। मैं अपने उत्तर को एक उदाहरण के साथ इंगित करने के लिए संपादित करूंगा –

संबंधित मुद्दे