让搜索活动返回结果?
问题描述:
嗨,我想知道如何让我的搜索活动返回结果回到启动它的活动。让搜索活动返回结果?
我目前实现了一个搜索对话框(意思是一旦点击了手机上的搜索按钮,搜索活动就会启动)。
这是我的代码为搜索活动这是一个列表视图。
公共类ItemFinder扩展ListActivity {
public static final int REQUEST_CODE = 1; // get it?
Vector<String> upcCodes;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search);
upcCodes = new Vector<String>();
ListView lv = (ListView) findViewById(android.R.id.list);
lv.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> a, View v, int position,
long id) {
String upc = upcCodes.elementAt(position);
setResult(RESULT_OK);
}
});
// Get the intent, verify the action and get the query
Intent intent = getIntent();
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
ProgressDialog dialog = ProgressDialog.show(ItemFinder.this, "Searching",
"Searching. Please wait...", true);
performSearch(query);
dialog.hide();
dialog.dismiss();
}
}
public void performSearch(String query){
String result = new SmartShopClient().SearchItems(query);
List<String> dataList = new ArrayList<String>();
String _parsedResult[] = result.split("\\n");
for(int i = 0; i<_parsedResult.length; i++){
String _splitData[] = _parsedResult[i].split("\\|");
String itemName = _splitData[0];
String itemUPC = _splitData[1];
dataList.add(itemName);
upcCodes.add(itemUPC);
}
ArrayAdapter<String> arr = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, dataList);
this.setListAdapter(arr);
}
}
所以搜索工作的所有罚款和花花公子,但我想它,所以当我点击的ListView的结果之一,因为它使用一些数据将数据返回到主要活动,例如点击搜索结果的名称。
谢谢。
答
在您的setOnItemClickListener
方法中会出现这种情况,您可以在其中启动一个明确的意图,用额外的数据命名所需的活动。
编辑:我不是很确定的startActivityForResult()
将如何实现,因为我们正在谈论的应用程序的搜索活动,这意味着它是由Android的搜索特定模块的推出;这就是为什么我建议上述解决方案。
+0
开始一个新的活动的问题是,我想给数据的以前的活动。我不想开始一个新的。 – Overload119
答
我落得这样做:
public boolean onSearchRequested() {
askSearchQuery();
return true;
}
public void sendSearchRequest(String query){
Intent mIntent = new Intent(this, ItemFinder.class);
mIntent.setAction(Intent.ACTION_SEARCH);
mIntent.putExtra(SearchManager.QUERY, query);
startActivityForResult(mIntent, ItemFinder.REQUEST_CODE);
}
public void askSearchQuery() {
final EditText input = new EditText(SmartShop.this);
AlertDialog.Builder adb = new AlertDialog.Builder(SmartShop.this);
adb.setTitle("Search Items");
adb.setMessage("Please input the name of the item you are looking for.");
adb.setView(input);
adb.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Editable upc = input.getText();
sendSearchRequest(upc.toString());
dialog.cancel();
}
});
adb.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
});
adb.create().show();
}
然后我迷上了
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
将这项工作的搜寻活动呢? – Overload119
实施此方法后,问题在于,即使在将任何输入放入框中之前,也会调用onSearchRequested。因此,搜索工作和结果由我的搜索查询返回始终默认为“空” – Overload119