2010-10-19 27 views
17

में दो खोज योग्य.एक्सएमएल गतिविधियां मेरे पास एक एंड्रॉइड ऐप है जिसमें आरएसएस से डाउनलोड किए गए लेखों और छवियों को ब्राउज़ करने के लिए कुछ अलग-अलग गतिविधियां हैं।एक AndroidManifest.xml

मैं searchable.xml फ़ाइल का उपयोग कर search button to the Search dialog को हुक करने की पेशकश करने में सक्षम होना चाहता हूं। मैं एक खोज के साथ यह करने के लिए, का उपयोग कर प्रबंधित किया है:

<activity android:name=".search.SearchResultsActivity" 
    android:label="@string/search_results_activity_title" > 
    <intent-filter> 
     <action android:name="android.intent.action.SEARCH" /> 
    </intent-filter> 
    <meta-data android:name="android.app.searchable" 
     android:resource="@xml/searchable_articles"/> 
</activity> 

और <application />

<meta-data android:name="android.app.default_searchable" 
    android:value=".search.SearchResultsActivity" /> 

में मैं अब किसी भी गतिविधि से खोजें संवाद शुरू कर सकते हैं, और यह SearchResultsActivity की शुरूआत।

अब searchable_images.xml का उपयोग करते हुए उपयोगकर्ता ImageListActivity पर छवियों को खोजने में सक्षम होना चाहूंगा, और हर जगह डिफ़ॉल्ट का उपयोग करें।

मेरे पास SearchResultsImageActivity है जिसमें निम्नलिखित मेटा-डेटा तत्व शामिल है, और ImageListActivity में उसी तत्व का उपयोग किया गया है।

<meta-data android:name="android.app.searchable" 
    android:resource="@xml/searchable_images"/> 

ImageListActivity में खोज बटन दबाने पर, मैं searchable_articles.xml की डिफ़ॉल्ट खोज मिलता है।

अगर मैं SearchResultsImageActivity करने के लिए default_searchable, छवि खोज हमेशा शुरू की है, और लेख खोज शुरू की कभी नहीं किया गया है बदल जाते हैं।

अगर मैं default_searchable मेटा डेटा तत्व पूरी तरह निकाल दें, और searchable मेटा डेटा केवल चयनित गतिविधियों जोड़ने के लिए, कोई खोज शुरू की है।

मुझे पूरा यकीन है कि यह संभव होना चाहिए, लेकिन मुझे नहीं पता कि मैं क्या गलत कर रहा हूं।

+0

क्या आप इसे समझ गए? – Dan

+0

मुझे नहीं लगता कि आप xml का उपयोग करके ऐसा कर सकते हैं क्योंकि संसाधन एक इरादे से एक है। आप अपने कोड में संसाधन को स्विच करने में सक्षम हो सकते हैं। – JPM

उत्तर

1

नकली गतिविधियों को बनाने के लिए मैंने ऐसा किया था, फिर जब आपको उनकी आवश्यकता हो तो गतिविधियों को बाहर कर दें।

<activity android:name="activitySearchMain" /> 
    <activity android:name="activitySearchSub1"> 
    <intent-filter> 
     <action android:name="android.intent.action.SEARCH" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.ALTERNATIVE" /> 
     <category android:name="android.intent.category.SELECTED_ALTERNATIVE" /> 
     <data android:scheme="user" /> 
    </intent-filter> 
    </activity> 
    <activity android:name="activitySearchSub2"> 
    <intent-filter> 
     <action android:name="com.sample.twitter.action.SEARCH" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.ALTERNATIVE" /> 
     <category android:name="android.intent.category.SELECTED_ALTERNATIVE" /> 
     <data android:scheme="user" /> 
    </intent-filter> 
</activity> 

उप-गतिविधियों के लिए नामित दो वर्ग बनाएं।

तो इस तरह उद्देश्य बनाने जब घटक क्लिक किया जाता है ...

Intent sourceIntent = getIntent(); 
Intent newIntent = new Intent(this, activitySearchSub2.class); 
newIntent.setAction(activitySearchSub2.ACTION2); 
newIntent.setData(sourceIntent.getData()); 
startActivity(newIntent); 
finish(); 

और onClick से उद्देश्य फोन जब एक बटन क्लिक किया जाता है या कुछ अन्य घटक क्लिक करें:

+0

मैं इस गतिविधि में एक गतिविधि पैटर्न के भीतर नहीं आया है। मुझे नहीं पता कि यह क्या कर रहा है। – jamesh

+0

बटन क्लिक करते समय गतिविधियों को स्विच करने का एक तरीका है लेकिन आपको पृष्ठभूमि में मुख्य गतिविधि रखने की इजाजत देता है। एक आरएसएस फ़ीड कहने से दस्तावेज़ पर खोज करते समय उपयोगी। – JPM

0

आप खोज ओवरराइड हैं केवल उस गतिविधि में कार्य करें, इसे खोज कॉल को एप्लिकेशन स्तर तक जाने से रोकना चाहिए। कॉल का प्रचार होने पर वापसी मूल्य नियंत्रण होता है।

@Override 
public boolean onSearchRequested() { 
    onPromptSearch(); 
    return false; // don't go ahead and show the search box 
} 
4

अपने Manifest फ़ाइल में ImageListActivity गतिविधि टैग

<activity 
    android:name=".ImageListActivity" 
    ... 

    <meta-data 
     android:name="android.app.default_searchable" 
     android:value=".SearchResultsImageActivity" /> 
</activity> 

अद्यतन तो जब आप ImageListActivity में देशी खोजें प्रारंभ होगा यह SearchResultsImageActivity लागू करेगा और दूसरों के लिए एक डिफ़ॉल्ट।

मानना ​​SearchResultsImageActivitysearchable है।

+0

यह काम कर रहा है। –

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