从操作栏在 API 中执行搜索

Execute search in API from Action Bar

我正在尝试从操作栏执行搜索。 我在 Intent GetBookInfo.class 中调用的 Activity 从 Google Books API.

中检索有关一本书的信息

我的问题是,当我开始写的时候,它只允许我写一个单词的字母,而不是整本书的标题,所以搜索永远不起作用。我该如何解决这个问题?

我的 "MainActivity".

中有以下代码
 @Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);

    MenuItem item = menu.findItem(R.id.search);
    SearchView searchView = (SearchView) item.getActionView();
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            Intent intent1 = new Intent(MainActivity.this, GetBookInfo.class);
            startActivity(intent1);
            return false;
        }
    });
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {

        case R.id.settings:
            Intent intent2 = new Intent(MainActivity.this, Ajustes.class);
            startActivity(intent2);
            return true;
        case R.id.about:
            Intent intent3 = new Intent(MainActivity.this, About.class);
            startActivity(intent3);
            return true;
        case R.id.exit:
            new AlertDialog.Builder(this).setIcon(android.R.drawable.ic_dialog_alert).setTitle("Salir")
                    .setMessage("¿Estás seguro?").setNegativeButton(android.R.string.cancel, null).setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    finish();
                }
            }).show();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

将您的代码更改为:

searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            Intent intent1 = new Intent(MainActivity.this, GetBookInfo.class);
            startActivity(intent1);
            return true;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            return true;
        }
    });

这将允许您输入全文,当您提交时,将 IntentGetBookInfo Activity

onQueryTextChangeSearchView 内的任何字符 added/removed/modified 时触发,因此目前只要您输入第一个字符,您的意图就会被触发

希望对您有所帮助!