从Action Bar执行API搜索

时间:2017-08-27 10:36:51

标签: android android-actionbar

我试图从操作栏执行搜索。 我在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);
    }
}

1 个答案:

答案 0 :(得分:0)

将您的代码更改为:

ionic serve --prod

这样您就可以输入全文,并在提交时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; } }); Intent GetBookInfo

Activity内添加/删除/修改任何字符时会触发

onQueryTextChange,因此,当您输入第一个字符时,您的意图就会被触发

希望它有所帮助!