从操作栏在 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;
}
});
这将允许您输入全文,当您提交时,将 Intent
到 GetBookInfo
Activity
onQueryTextChange
当 SearchView
内的任何字符 added/removed/modified 时触发,因此目前只要您输入第一个字符,您的意图就会被触发
希望对您有所帮助!
我正在尝试从操作栏执行搜索。 我在 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;
}
});
这将允许您输入全文,当您提交时,将 Intent
到 GetBookInfo
Activity
onQueryTextChange
当 SearchView
内的任何字符 added/removed/modified 时触发,因此目前只要您输入第一个字符,您的意图就会被触发
希望对您有所帮助!