2013-01-01 19 views
6

मेरे आवेदन में मैंने अपने सामग्री प्रदाता को खोजने योग्य बनाया, मेरी मुख्य गतिविधि को मेरे मैनिफेस्ट पर डिफ़ॉल्ट खोज गतिविधि के रूप में परिभाषित किया।onSuggestionClick मेरी गतिविधि को दोबारा शुरू करता है

<activity 
      android:name="com.pt.application.MainActivity" 
      android:label="@string/title_activity_map" 
      android:launchMode="singleTop" 
      android:theme="@style/AppTheme" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
      <intent-filter> 
       <action android:name="android.intent.action.SEARCH" /> 
      </intent-filter> 

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

तो मैं सुझाव उपयोगकर्ता द्वारा क्लिक किया के आधार पर एक नक्शा अद्यतन करने के लिए onSuggestionClick विकल्प लागू किया,। सर्चव्यू एक्शन बार पर है। समस्या यह है कि जब उपयोगकर्ता किसी सुझाव पर क्लिक करता है, तो किसी भी तरह गतिविधि को पुनर्निर्मित किया जाता है (मुझे लगता है कि ऑनपोज और ऑनर्यूम कहा जाता है?)। क्या ऐसा होने से रोकने के लिए कोई रास्ता है? मैं नहीं चाहता कि जब भी उपयोगकर्ता सुझाव पर क्लिक करता है तो मेरी गतिविधि "पुनर्निर्मित" होती है।

यदि अधिक कोड की आवश्यकता है, तो कृपया पूछें। धन्यवाद।

संपादित करें: कोड

<?xml version="1.0" encoding="utf-8"?> 
<searchable xmlns:android="http://schemas.android.com/apk/res/android" 
    android:label="@string/app_name" 
    android:hint="@string/search_hint" 
    android:voiceSearchMode="showVoiceSearchButton|launchRecognizer" 
    android:voiceLanguageModel="web_search" 
    android:searchSuggestAuthority="com.pt.provider" 
    android:searchSuggestIntentData="content://com.pt.provider/busstop"> 
</searchable> 

जोड़ा मेरा मुख्य गतिविधि पर:

 // Bind the Activity’s SearchableInfo to the Search View 
      searchView = (SearchView)menu.findItem(R.id.menu_search).getActionView(); 
      this.setupSearchView(); 

    private void setupSearchView() 
     { 
      // Use the Search Manager to find the SearchableInfo related 
      // to this Activity. 
      SearchManager searchManager = 
        (SearchManager)getSystemService(Context.SEARCH_SERVICE); 
      SearchableInfo searchableInfo = 
        searchManager.getSearchableInfo(getComponentName()); 
      searchView.setSearchableInfo(searchableInfo); 
      searchView.setSubmitButtonEnabled(false); 

      searchView.setOnSuggestionListener(new OnSuggestionListener() { 

       @Override 
       public boolean onSuggestionSelect(int position) { 

        return false; 
       } 

       @Override 
       public boolean onSuggestionClick(int position) { 

        // Do things 

        return false; 
       } 
      }); 
     } 
+0

अपने खोजा रूप में अपनी गतिविधि कोड जोड़ कृपया (या कम से कम सभी प्रासंगिक भागों खोज के साथ क्या करना है कि) के साथ .xml। –

+0

कुछ कोड जोड़ा गया। – Gravecard

उत्तर

2

मेरे सवाल का हल।

से::

android:launchMode="singleTop" 

करने के लिए: प्रकट पर बदली गई

android:launchMode="singleTask" 
+5

आप onSuggestionClick() से भी सच लौट सकते हैं, इस तरह एंड्रॉइड यह मान लेगा कि आपकी विधि क्लिक ईवेंट को संभाला है और इसके बारे में कुछ और नहीं करेगा (उदाहरण के लिए अपनी गतिविधि फिर से शुरू करें) - शायद यह करने के लिए यह एक "क्लीनर" तरीका है (और "आधिकारिक तौर पर अनुशंसित" एक), भले ही आपकी विधि भी काम करती है। – ToVine