搜索视图意图;nt启动searchActivity



我在中有一个searchView (android.support.v7.widget.SearchView)

toolbar,在其他项目上一切都可以,但当我使用这个时

TabLayotViewPager编码,它不起作用。我没有错误

在这段代码中,但当我键入搜索查询并点击回车键时,搜索活动不会显示。任意方式

这是我在toolbar=>main_menu.xml:中的菜单项

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">
    <item
        android:id="@+id/action_search"
        android:icon="@drawable/search"
        app:showAsAction="collapseActionView|ifRoom"
        app:actionViewClass="android.support.v7.widget.SearchView"
        android:title="جستو ... "/>
</menu>

这是我在MainActivity:中的onCreateOptionMenu()

  //onCreateOptionsMenu()
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //inflate the menu
        getMenuInflater().inflate(R.menu.main_menu , menu);
        //setup searchManager
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        //menuItem
        MenuItem searchItem = menu.findItem(R.id.action_search);
        //searchview v7
        SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
        //setting the searchable info
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
        searchView.setIconifiedByDefault(true);
        return true;
    }

这就是SearchResultsActivity.java:

package ghandak.ghandshekan.com.ghandak.activities;
import android.app.SearchManager;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
/**
 * Created by imajid on 12/28/2015.
 */
public class SearchResultsActivity extends AppCompatActivity {
    TextView txtQueryString;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_results);
        Log.d("moshkel", "onCreate SearchResultActivity seda zade shod !!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        Toolbar toolbar = (Toolbar)findViewById(R.id.xmlToolbarResult);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
        txtQueryString = (TextView)findViewById(R.id.txtSearchResult);
        handleIntent(getIntent());
    }
    //onCreateOptionsMenu()
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_search, menu);
        return true;
    }

    //onNewIntent()
    @Override
    protected void onNewIntent(Intent intent) {
        Log.d("moshkel" , "onNewIntent SearchResultActivity seda zade shod ????????????????????????");
        handleIntent(intent);
    }
    //handleIntent()
    private void handleIntent(Intent intent) {
        if(Intent.ACTION_SEARCH.equals(intent.getAction())){
            String searchQuery = intent.getStringExtra(SearchManager.QUERY);
            doSearchQuery(searchQuery);
        }
    }
    private void doSearchQuery(String searchQuery) {
        txtQueryString.setText(searchQuery);
    }
    private void backToMain(MenuItem item){
        startActivity(new Intent(SearchResultsActivity.this , MainActivity.class));
    }
}

这就是searchable.xml:

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/app_name"
    android:hint="please search">
</searchable>

最后这是AndroidManifest:

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ghandak.ghandshekan.com.ghandak.activities">
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:name="ghandak.ghandshekan.com.ghandak.app.AppController"
        android:theme="@style/AppTheme">
        <!-- MainActivity -->
        <activity android:name=".MainActivity"
            android:label="@string/app_name">
            <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=".SearchResultsActivity"
                />
        </activity>
        <!-- SearchResultsActivity -->
        <activity
            android:name=".SearchResultsActivity"
            android:label="@string/app_name"
            android:launchMode="singleTop">
            <intent-filter>
                <action android:name="android.intent.action.SEARCH"/>
            </intent-filter>
            <meta-data
                android:name="android.app.searchable"
                android:resource="@xml/searchable"
                />
        </activity>
    </application>
</manifest>

试试这个代码片段

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        menu.clear();
        inflater.inflate(R.menu.search_option_menu, menu);
        MenuItem item = menu.findItem(R.id.action_search);
        SearchView searchView = new SearchView(((MainActivity) mContext).getSupportActionBar().getThemedContext());
        MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW | MenuItemCompat.SHOW_AS_ACTION_IF_ROOM);
        MenuItemCompat.setActionView(item, searchView);
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
               //Here Replace with your SearchResultsActivity
                return false;
            }
            @Override
            public boolean onQueryTextChange(String newText) {
                return false;
            }
        });
    }

最新更新