2016-04-06 13 views
0

これはよくある問題です。ユーザーがSearchViewをクリックするとすぐに別のアクティビティを開始します

ただし、ユーザーがクエリを送信しない限り、ユーザーがsearchView(アイコンではない)をクリックするたびに別のアクティビティを起動することはできません。

以下は、ユーザーがクエリを送信したときに別のアクティビティを起動するときに表示される機能コードですが、ユーザーがsearchView(拡張テキストフィールド)をクリックするとすぐに別のアクティビティを開始します。

ありがとうございます。 onOptionsItemSelectedメソッドで/ switch文は、その後、インテントを使用しsearchView IDを識別する場合は、書くことができる場所のxml

<activity 
     android:name=".MainPage" 
     android:label="@string/title_activity_main_page" 
     android:theme="@style/AppThemeMain"> 
     <intent-filter> 

      <action android:name="android.intent.action.MAIN"/> 

      <category android:name="android.intent.category.LAUNCHER"/> 

     </intent-filter> 

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

    </activity> 

    <provider android:name=".MySuggestionProvider" 
     android:authorities="ad.aureus.apicius.MySuggestionProvider" /> 

    <activity android:name=".SearchActivity"> 

     <intent-filter> 

      <action android:name="android.intent.action.SEARCH"/> 

     </intent-filter> 

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

    </activity> 

MainPage.classが

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main_page, menu); 

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
    SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView(); 
    searchView.setSearchableInfo(searchManager.getSearchableInfo(new ComponentName(this, SearchActivity.class))); 



    return true; 
} 

ところで、私が試してみました

。どちらもうまくいきませんでした。

のonCreateメソッド:

Intent intent = getIntent(); 
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) { 
     String query = intent.getStringExtra(SearchManager.QUERY); 
     SearchRecentSuggestions suggestions = new SearchRecentSuggestions(this, 
       MySuggestionProvider.AUTHORITY, MySuggestionProvider.MODE); 
     suggestions.saveRecentQuery(query, null); 

私は最近、クエリの提案のために、のonCreateでこれを持っている、と私は、これは私の問題の原因であるかのかどうかわかりません。私はこれが最初に呼び出されるので、onOptionsItemSelectedメソッドの属性を抑制すると仮定していますか?わからない。..

長さは新しい活動を開始し、彼らが働いているsetOnClickListenerを設定0が、ある場合はここでメニュー

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 
<item 
    android:id="@+id/action_settings" 
    android:orderInCategory="100" 
    android:title="@string/action_settings" 
    app:showAsAction="never" /> 

<item android:id="@+id/search" 
    android:title="@string/title_activity_main_page" 
    app:showAsAction="always" 
    app:actionViewClass="android.support.v7.widget.SearchView" 
    /> 

+0

SearchViewをsetOnQueryTextListenerで使用し、このonQueryTextChange内で、長さが0に等しい場合は、別のアクティビティに移動してこれを試してみてください。 –

+0

リスナーをビュー – Jois

+0

に配置して、 SearchViewをクリックします。**内部には何も入力しません。どうして?何のために? – pskink

答えて

0

のXMLは、実装における代替方法のいくつかのおかげですアイコンをfalseに設定したときに動作しなかったロゴをクリックしたときにのみ表示されます。

私はpskinkのコメントを考慮して、私の問題を解決した別のアプローチを採用しました。私はSearchViewを取り除き、それをEditTextフィールドに変更して、インスタントonClickを別のアクティビティへのシングルタップで実行できるようにすることは、かなり簡単なアプローチでした。

問題の代替案と解決策をありがとうございました。彼らは私が後でそれらを参照するように大きな助けとなっており、私は今どの作品とそうでない作品があるか知っています。

関連する問題