0

我有一個奇怪的問題。只有當SearchView中的文本被提交時,我只想移動到另一個Activity。但是,當我提交它時,實際發生的事情是在接近1到5秒的時間內再次啓動主要活動。我試圖將該Intent置於其他地方,並且運行良好。SearchView onQueryTextSubmit - 奇怪的問題

你有什麼想法,該如何解決?

在此先感謝

MainActivity的一部分(我用動作條的標籤順便說一句......福爾摩斯)

@Override 
    public boolean onPrepareOptionsMenu(Menu menu) { 

     super.onPrepareOptionsMenu(menu); 

getSupportMenuInflater().inflate(R.menu.main, menu); 

     SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
     SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView(); 
     if (null != searchView) 
     { 
      searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 

     } 
     SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() 
     { 
      public boolean onQueryTextChange(String newText) 
      { 

       return true; 
      } 

      public boolean onQueryTextSubmit(String query) 
      { 
       Log.v("tag", "submited"); 
Intent intent = new Intent(getApplicationContext(), SearchActivity.class); 
       intent.putExtra("null", "null"); 
       startActivity(intent); 

       return true; 

      } 
     }; 
     searchView.setOnQueryTextListener(queryTextListener); 

int currentItem = mPager.getCurrentItem(); 
      if(currentItem == 0){ 
       menu.findItem(R.id.action_refresh).setVisible(false); 
       menu.findItem(R.id.action_search).setVisible(true); 
       menu.findItem(R.id.action_overflow).setVisible(false); 
      } 
      else if(currentItem == 1) { 
       menu.findItem(R.id.action_refresh).setVisible(true); 
       menu.findItem(R.id.action_search).setVisible(false); 
       menu.findItem(R.id.action_overflow).setVisible(false); 
      } 
      else if(currentItem == 2) { 
       menu.findItem(R.id.action_refresh).setVisible(false); 
       menu.findItem(R.id.action_search).setVisible(false); 
       menu.findItem(R.id.action_overflow).setVisible(true); 
      } 
       return true; } 

AndroidManifest

<application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.animalist.MainActivity" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" > 
      <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.default_searchable" 
      android:value=".SearchActivity" /> 

      <meta-data 
       android:name="android.app.searchable" 
       android:resource="@xml/searchable" /> 
     </activity> 
     <activity 
      android:name="com.example.animalist.MoreActivity" 
      android:label="@string/title_activity_more" 
      android:parentActivityName="com.example.animalist.MainActivity" 
      android:screenOrientation="portrait" > 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="com.example.animalist.MainActivity" /> 
     </activity> 
     <activity 
      android:name="com.example.animalist.SearchActivity" 
      android:label="@string/title_activity_search" 
      android:parentActivityName="com.example.animalist.MainActivity" > 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="com.example.animalist.MainActivity" /> 
     </activity> 
    </application> 

</manifest> 

回答

0

也許你的問題可以是你反覆詢問,你有沒有嘗試調試並確認這沒有發生?如果發生了,你將需要處理哪個是開始活動的正確時間,你可以使用一個處理程序post延遲或另一個解決方案可以檢查是否剛剛遇到onQuerySubmit方法,如果是,請不要啓動活動。

-1

試試這個,我認爲這會工作:

searchView.setQuery("", false); 
searchView.requestFocus(); 
return true;